我试图用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程序的编码输出匹配。某处某处是否有错误??
答案 0 :(得分:0)
是,zlib_encode()
(使用默认参数)和uncompress()
兼容,compress2()
和zlib_decode()
兼容。
检查的方法是不来比较压缩输出。通过使用uncompress()
和zlib_decode()
解压缩来检查。没有理由期望压缩输出将是相同的,并且它不需要。重要的是它可以在另一端无损解压缩。