例如,我有一个字符串:PHP 中的“10001000101010001”我用 gzcompress 压缩它,但它压缩 ASCII 等价物。我想压缩字符串,就好像它是二进制数据而不是 ASCII 二进制数据一样。
基本上我有两个问题:
- 如何将 1 和 0 的列表转换为二进制
- 使用 gzcompress 压缩生成的二进制文件
提前致谢。
例如,我有一个字符串:PHP 中的“10001000101010001”我用 gzcompress 压缩它,但它压缩 ASCII 等价物。我想压缩字符串,就好像它是二进制数据而不是 ASCII 二进制数据一样。
基本上我有两个问题:
提前致谢。
看一下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;
}