2011-07-10 4 views
1

PHPの文字列「10001000101010001」があります。 gzcompressで圧縮していますが、それに相当するASCIIを圧縮しています。 文字列をバイナリデータであるかのように圧縮したいと思います。1と0の文字列をバイナリ値に変換した後に圧縮するPHP

Bascially私は2つの問題を抱えて:バイナリ

  • に1と0のリストを変換する方法

    1. はgzcompressと結果のバイナリに事前に

    感謝を圧縮します。

  • +0

    のようなものです。 – ComFreek

    答えて

    3

    bindec()の機能を見てください。

    基本的にあなたが

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

    (ドライコーディングされ、盲目的にそれを信用する前に自分でそれをテストしてください)のようなものは、次のことができた後あなたは、バイト文字列に指定された形式の文字列を有効にすることをお勧めしますgzcompress()です。

    補完的な機能は、たぶん、あなたは)ファイルにあなたの「バイナリ」の文字列を書き、gzファイルを(呼び出すことができ

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

    こんにちは@AKX!お返事ありがとうございます。 だから私はこれを行うことができますか? $ output = '';$出力。= chr(bindec(substr($ string_to_compress、$ i、8)));); for($ i = 0; $ i chineerat

    +0

    あなたのソースでこれらの関数をそのまま使用して、単純に '$ compressed = gzcompress(binaryStringToBytes( '10001000101010001')、7);'を実行することができます。 – AKX

    +0

    完璧、ありがとう! – chineerat

    関連する問題