zlib_encode()的意外输出

时间:2014-08-14 21:44:18

标签: php encoding compression zlib decoding

我试图用PHP编码一大块二进制数据,就像zlib的compress2()函数一样。但是,使用zlib_encode(),我得到了错误的编码输出。我知道这是因为我有一个C程序(正确)。当我将C程序的输出(使用十六进制编辑器)与下面的PHP脚本的输出进行比较时,我发现它根本不匹配。

我的问题是,这是否真的以与zlib' compress2()函数相同的方式进行压缩?

<?php
$filename = 'C:\data.bin';
$in = fopen($filename, 'rb');
$data = fread($in, filesize($filename));
fclose($in);

$data_dec = zlib_decode($data);
$data_enc = zlib_encode($data_dec, ZLIB_ENCODING_DEFLATE, 9);
?>

压缩级别正确,因此它应与C程序的编码输出匹配。某处某处是否有错误??

1 个答案:

答案 0 :(得分:0)

是,zlib_encode()(使用默认参数)和uncompress()兼容,compress2()zlib_decode()兼容。

检查的方法是来比较压缩输出。通过使用uncompress()zlib_decode()解压缩来检查。没有理由期望压缩输出将是相同的,并且它不需要。重要的是它可以在另一端无损解压缩。