1 回答
TA贡献2012条经验 获得超12个赞
https://nodejs.org/api/buffer.html#buffer_buf_buffer
此 ArrayBuffer 不保证与原始缓冲区完全对应。有关详细信息,请参阅 buf.byteOffset 上的注释。
底层 ArrayBuffer 中的缓冲区数据从.byteOffset
您还为Buffer.from读取的十六进制字符串使用了错误的格式,并且您还需要告诉它使用“十六进制”编码(默认值为“utf-8”)。它不理解空格(也不理解16位值的概念,这将是TypedArrays和.readInt16BE以及其他实用程序函数的工作)。
buf=Buffer.from("02FD160000000000002E14811F8F75000000004D",'hex')
data=buf.buffer.slice(buf.byteOffset,buf.byteOffset+buf.length)
我不知道你从哪里得到这些数据,但它看起来像16位值。您必须确保数据的字节序,以确保字节不需要交换。
通过使用 TypedArray 获取 ArrayBuffer。这适用于浏览器:
data = new Uint16Array("02FD 1600 0000 0000 002E 1481 1F8F 7500 0000 004D"
.split(' ').map(x=>parseInt(x,16)))
console.log([...data].map(x=>x.toString(16).padStart(4,'0')).join(''))
buf = data.buffer; //ArrayBuffer
添加回答
举报