1

たとえば、「10001000101010001」という文字列があります。PHP では gzcompress で圧縮していますが、同等の ASCII を圧縮しています。文字列をASCIIバイナリではなくバイナリデータであるかのように圧縮したいと思います。

基本的に私には2つの問題があります:

  1. 1 と 0 のリストをバイナリに変換する方法
  2. 結果のバイナリを gzcompress で圧縮します

前もって感謝します。

4

1 に答える 1

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;
}
于 2011-07-10T15:10:08.893 に答える