2017-07-18 114 views
0

我有一个十六进制类型的缓冲区。nodejs zlib充气六进制缓冲区

我无法使用zlib对此缓冲区进行充气。它返回不正确的标题检查。

请找到下面的实现:

var actualOutput = new Buffer("0130c21164300028","hex"); 
var actOut = actualOutput.toString('hex'); 
console.log(actOut); 
var actBuff = new Buffer(actOut,'base64'); 
zlib.inflate(actBuff, function(err, actBuff) { 
    if (!err) { 
    console.log(actOut+'\ninflate\n'+actBuff.toString()+'\n'); 
    }else{ 
    console.log('\ninflate error:\n'+err); 
    } 
}); 
+0

你从哪里得到那个十六进制字符串? – robertklep

回答

0

你可能想直接传递到actualOutputzlib.inflate

在您目前的代码,从十六进制字符串形成缓冲,转换该缓冲区回一个十六进制字符串,解码十六进制字符串为base64,然后使该缓冲液为zlib.inflate。由此产生的缓冲区将有损坏的信息。

+0

良好的调用,尽管这只是问题的一部分(因为即使使用正确的缓冲区,也不能膨胀)。 – robertklep

+0

在这种情况下,原始的十六进制字符串不是有效数据,或者没有使用deflate压缩? – iczero

+0

因此,我的评论问哪里的数据来自; D – robertklep