Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用Buffer.from创建的缓冲区的基础ArrayBuffer在Node.js 8.6.0中包含奇怪的值_Javascript_Node.js - Fatal编程技术网

Javascript 使用Buffer.from创建的缓冲区的基础ArrayBuffer在Node.js 8.6.0中包含奇怪的值

Javascript 使用Buffer.from创建的缓冲区的基础ArrayBuffer在Node.js 8.6.0中包含奇怪的值,javascript,node.js,Javascript,Node.js,在调试应用程序半天之后,我遇到了一个非常奇怪的行为,我不理解。请查看以下代码段: const buffer=buffer.from([12,34,56,78,90]); const dataView=新数据视图(buffer.buffer); log('buffer byteLength:',buffer.byteLength); log('dataView byteLength:',dataView.byteLength); log('buffer中的第一个uint8:',buffer.rea

在调试应用程序半天之后,我遇到了一个非常奇怪的行为,我不理解。请查看以下代码段:

const buffer=buffer.from([12,34,56,78,90]);
const dataView=新数据视图(buffer.buffer);
log('buffer byteLength:',buffer.byteLength);
log('dataView byteLength:',dataView.byteLength);
log('buffer中的第一个uint8:',buffer.readUInt8(0));
log('dataView中的第一个uint8:',dataView.getUint8(0));
对我来说,这个脚本的输出是:

缓冲区长度:5
dataView ByTeleLength:8192
缓冲区中的第一个uint8:12
dataView中的第一个uint8:99

我使用的Node.js版本是8.6.0。

显然,尽管中没有说明,但该函数会自动创建一个
缓冲区,该缓冲区分配不安全,如中所述

暗示有一个属性
Buffer#byteOffset
保存
缓冲区的底层
数组缓冲区的字节偏移量。此属性不是针对
缓冲区本身记录的,而是针对
Uint8Array

使用以下行扩展原始代码段将产生预期的输出

console.log('dataView:'中的第一个uint8',dataView.getUint8(buffer.byteOffset));//产出:12