たとえば、「10001000101010001」という文字列があります。PHP では gzcompress で圧縮していますが、同等の ASCII を圧縮しています。文字列をASCIIバイナリではなくバイナリデータであるかのように圧縮したいと思います。
基本的に私には2つの問題があります:
- 1 と 0 のリストをバイナリに変換する方法
- 結果のバイナリを gzcompress で圧縮します
前もって感謝します。
たとえば、「10001000101010001」という文字列があります。PHP では gzcompress で圧縮していますが、同等の ASCII を圧縮しています。文字列をASCIIバイナリではなくバイナリデータであるかのように圧縮したいと思います。
基本的に私には2つの問題があります:
前もって感謝します。
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;
}