缓冲区长度小于预期

时间:2015-06-24 13:30:19

标签: javascript node.js buffer

我正在从一个长十六进制字符串创建一个缓冲区但是会出现一些不匹配的错误(当我尝试解密它时)。果然,当我运行以下代码时:

var hexData = fs.readFileSync(fileName).toString().trim();
var bufferData = new Buffer(hexData, 'hex');

console.log(Buffer.byteLength(hexData, 'hex'));
console.log(bufferData.length);

我的输出是:

  

232548

     

30

为什么整个字符串没有加载到缓冲区?

编辑:我注意到我很傻,应该做

var bufferData = fs.readFileSync(fileName, 'hex');

的长度为930194

1 个答案:

答案 0 :(得分:2)

假设您在构建hexData时意味着data而不是bufferDataBuffer.byteLength似乎很乐意接受格式错误的十六进制,而Buffer构造函数会将其删除超出缓冲区。考虑:

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

也许您的文件包含无效的十六进制文件?