我正在尝试使用其arraybuffer的片复制缓冲区,但结果缓冲区包含错误的值。这是一个例子:
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
所以现在我想知道导致这种“不同行为”的原因。
答案 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));
关于如何生成错误,有两种可能的情况:
buffer
- 属性在内部未初始化无论哪种方式,访问该属性似乎都是错误。