将1s和0s的字符串转换为二进制值,然后压缩,PHP

时间:2011-07-10 14:59:55

标签: php binary compression data-compression

我有一个字符串例如:PHP中的“10001000101010001” 我用gzcompress压缩它,但它压缩ASCII等价物。 我想压缩字符串,好像它是二进制数据,而不是ASCII二进制等价。

基本上我有两个问题:

  1. 如何将1和0的列表转换为二进制
  2. 使用gzcompress压缩生成的二进制文件
  3. 提前感谢。

1 个答案:

答案 0 :(得分:3)

查看bindec()功能。

基本上你会想要的东西(干编码,请在盲目信任之前自己测试)

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

将您指定格式的字符串转换为字节字符串,之后您可以随意gzcompress()

补充功能类似于

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;
}