javascript - Node.js 缓冲区奇怪的行为

标签 javascript node.js

我试图用其数组缓冲区的切片复制缓冲区,但结果缓冲区包含错误的值。这是示例:

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 属性未在内部初始化

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

关于javascript - Node.js 缓冲区奇怪的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43093811/

相关文章:

javascript - json对象的具体索引

javascript - 服务器上的 Meteor 客户端断开连接事件

javascript - 如何将 VBScript 变量传递给 iMacros Javascript 宏?

node.js - Redshift - node-orm-2 的自动增量 ID 不支持类型 "serial"

node.js - npx create-nuxt-app 返回意外的标识符

javascript - 将标准 jQuery 事件与 SlickGrid 结合使用

javascript - 如何获取导致 JavaScript 中抛出 ReferenceError 的变量?

javascript - 如何降低 JavaScript 代码中的循环复杂度?

node.js - 需要 express.js Controller oop 提示

javascript - 多个 2d 索引,不确定在哪个上运行 geoNear