缓冲区长度小于预期
我从一个很长的hexstring创build一个缓冲区,但得到一些大小不匹配(当我试图解密它)。 果然,当我运行下面的代码:
var hexData = fs.readFileSync(fileName).toString().trim(); var bufferData = new Buffer(hexData, 'hex'); console.log(Buffer.byteLength(hexData, 'hex')); console.log(bufferData.length);
我的输出是:
232548
三十
为什么整个string没有被加载到缓冲区?
编辑:我注意到我是愚蠢的,应该做的
var bufferData = fs.readFileSync(fileName, 'hex');
但是那个长度是930194
!
假设你的意思是hexData
而不是data
当你build立bufferData
, Buffer.byteLength
似乎很乐意接受格式不正确的hex,而Buffer
构造函数会将其从缓冲区中删除。 考虑:
> Buffer.byteLength('ff00junk', 'hex') 4 > var b = new Buffer('ff00junk', 'hex') > b.length 2 > b <Buffer ff 00>
也许你的文件包含无效的hex?