我试图用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程序的编码输出相匹配。也许某处有bug…div ?
是,zlib_encode()
(带默认参数)和uncompress()
兼容,compress2()
和zlib_decode()
兼容。
检查的方法是而不是来比较压缩后的输出。通过使用uncompress()
和zlib_decode()
解压来检查。没有理由期望压缩后的输出是相同的,也不需要。重要的是它可以在另一端无损解压缩。