缓冲区长度小于预期
Buffer length smaller than expected
我正在从一长串十六进制创建缓冲区,但大小不匹配(当我尝试解密它时)。果然当我运行下面的代码:
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
!
假设您在构建 bufferData
时的意思是 hexData
而不是 data
,Buffer.byteLength
似乎很乐意接受格式错误的十六进制,而 Buffer
构造函数将将其从缓冲区中剥离出来。考虑:
> Buffer.byteLength('ff00junk', 'hex')
4
> var b = new Buffer('ff00junk', 'hex')
> b.length
2
> b
<Buffer ff 00>
也许您的文件包含无效的十六进制?
我正在从一长串十六进制创建缓冲区,但大小不匹配(当我尝试解密它时)。果然当我运行下面的代码:
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
!
假设您在构建 bufferData
时的意思是 hexData
而不是 data
,Buffer.byteLength
似乎很乐意接受格式错误的十六进制,而 Buffer
构造函数将将其从缓冲区中剥离出来。考虑:
> Buffer.byteLength('ff00junk', 'hex')
4
> var b = new Buffer('ff00junk', 'hex')
> b.length
2
> b
<Buffer ff 00>
也许您的文件包含无效的十六进制?