Converting string of 1s and 0s into binary value, then compress afterwards ,PHP
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 A开发者_开发百科SCII binary equivalent.
Bascially I have 2 problems:
- how to convert a list of 1s and 0s into binary
- compress the resulting binary with gzcompress
thanks in advance.
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;
}
精彩评论