缓冲区长度小于预期

我从一个很长的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立bufferDataBuffer.byteLength似乎很乐意接受格式不正确的hex,而Buffer构造函数会将其从缓冲区中删除。 考虑:

 > Buffer.byteLength('ff00junk', 'hex') 4 > var b = new Buffer('ff00junk', 'hex') > b.length 2 > b <Buffer ff 00> 

也许你的文件包含无效的hex?