繁体   English   中英

node.js缓冲奇怪的行为

[英]node.js buffer strange behavior

我正在尝试使用其arraybuffer的slice复制一个缓冲区,但是结果缓冲区包含错误的值。 这是示例:

var sourceBuf = new Buffer(1);
sourceBuf.writeUInt8(1, 0);
var slice = sourceBuf.buffer.slice(0,1);
var resultBuf = new Buffer(slice);
console.log(resultBuf.readUInt8(0));

输出118

在TypedArray的情况下,所有功能都如我最初预期的那样:

var sourceBuf = new Uint8Array(1);
sourceBuf[0] = 1;
var slice = sourceBuf.buffer.slice(0,1);
var resultBuf = new Uint8Array(slice);
console.log(resultBuf[0]);

输出1

因此,现在我想知道是什么原因导致了这种“不同行为”。

您似乎正在访问内部缓冲区并读取该值。 尝试像这样访问值:

var sourceBuf = new Buffer(1);
sourceBuf.writeUInt8(1, 0);
var slice = sourceBuf.slice(0,1); // Changed this line
var resultBuf = new Buffer(slice);
console.log(resultBuf.readUInt8(0));

关于错误如何产生的两种可能的情况:

  1. 原始缓冲区中的二进制值被错误地解释
  2. robertKlep建议buffer属性在内部未初始化

无论哪种方式,访问该属性似乎都是错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM