Преобразование строки 1 и 0 в двоичное значение, а затем сжатие, PHP - PullRequest
1 голос
/ 10 июля 2011

У меня есть строка, например: «10001000101010001» в PHP Я сжимаю ее с помощью gzcompress, но она сжимает эквивалент ASCII.Я хотел бы сжать строку, как если бы это были двоичные данные, а не двоичный эквивалент ASCII.

В основном у меня есть 2 проблемы:

  1. как преобразовать список из 1 и 0 вдвоичный файл
  2. сжимает полученный двоичный файл с помощью gzcompress

заранее спасибо.

1 Ответ

3 голосов
/ 10 июля 2011

Посмотрите на функцию 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;
}
...