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
添加回答
舉報