前端知库

DataView 怎样读取指定字节序的二进制数据?

参考答案

多字节数值的字节排列有大端和小端之分。TypedArray 的多字节解释通常遵循平台字节序;DataView 可以在每次读写时显式指定字节序,更适合包含不同类型字段的二进制格式。

JavaScript
const buffer = new ArrayBuffer(2);
const view = new DataView(buffer);
view.setUint16(0, 0x1234); // 默认采用大端
console.log(new Uint8Array(buffer).join(',')); // 输出:18,52
console.log(view.getUint16(0)); // 输出:4660
console.log(view.getUint16(0, true)); // 输出:13330

DataView 的偏移按字节计算,超出可访问范围会抛出错误。协议解析应明确字段长度、符号、字节序和数据完整性,不能因为本机测试正确就默认所有设备的多字节视图解释相同。