Converting string of 1s and 0s into binary value, then compress afterwards ,PHP

|▌冷眼眸甩不掉的悲伤 提交于 2020-01-15 10:54:06

问题


I have a string for example: "10001000101010001" in PHP I am compressing it with gzcompress, but it compresses ASCII equivalent. I would like to compress the string as if it were binary data not it ASCII binary equivalent.

Bascially I have 2 problems:

  1. how to convert a list of 1s and 0s into binary
  2. compress the resulting binary with gzcompress

thanks in advance.


回答1:


Take a look at the bindec() function.

Basically you'll want something like (dry-coded, please test it yourself before blindly trusting it)

function binaryStringToBytes($binaryString) {
    $output = '';
    for($i = 0; $i < strlen($binaryString); $i += 8) {
        $output .= chr(bindec(substr($binaryString, $i, 8)));
    }
    return $output;
}

to turn a string of the format you specified into a byte string, after which you can gzcompress() it at will.

The complementary function is something like

function bytesToBinaryString($byteString) {
    $out = '';
    for($i = 0; $i < strlen($byteString); $i++) {
        $out .= str_pad(decbin(ord($byteString[$i])), 8, '0', STR_PAD_LEFT);
    }
    return $out;
}


来源:https://stackoverflow.com/questions/6641807/converting-string-of-1s-and-0s-into-binary-value-then-compress-afterwards-php

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!