【发布时间】:2022-01-17 07:33:08
【问题描述】:
我试图弄清楚如何使用 int 中的缓冲区表示。 简单的代码
var buffer = Buffer.alloc(4, 'a');
var interface16 = new Uint16Array(buffer);
var interface8 = new Uint8Array(buffer);
console.log(interface16);
console.log(interface8);
为什么日志输出相同的数组(按值和长度)?毕竟,我正在以每个整数 1 和 2 个字节的形式进行数据表示。至少手册说 Uint8Array - 从缓冲区中获取 1 个字节,我认为它是 0 和 1 的序列,在本例中为 32(4 * 8)。也就是说,我可以忍受它将是一个包含 4 个元素的数组。 但 Uint16Array 取 2 个字节为一个整数,即个数必须不同,数组的大小为 2。 我错了什么以及将哪个缓冲区传递给这些构造函数以便直观地看到差异? 我怀疑在任何情况下返回的数组的长度都与字节数相同,或者这是控制台如何生成输出的问题。大概。但是没有足够的知识来理解为什么。 感谢您的关注。
附:如果你也直接在这个问题上推荐一些非脑爆的文献,那就太好了。
【问题讨论】:
-
a nodejs
Buffer是,尽管名称,不是ArrayBuffer而是Uint8Array子类。要访问其底层缓冲区(并将类型化数组构造为其上的视图),您需要编写new Uint16Array(buffer.buffer);和new Uint8Array(buffer.buffer);。
标签: javascript node.js binary