Преобразование строки 1 и 0 в двоичное значение, а затем сжатие,PHP
У меня есть строка, например: "10001000101010001" в PHP Я сжимаю его с помощью gzcompress, но он сжимает эквивалент ASCII. Я хотел бы сжать строку, как если бы это были двоичные данные, а не двоичный эквивалент ASCII.
В основном у меня есть 2 проблемы:
- как преобразовать список из 1 и 0 в двоичный
- сжать полученный бинарный файл с помощью gzcompress
заранее спасибо.
1 ответ
Решение
Посмотрите на функцию 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;
}