我有一个PHP类,用于读取我正在转换到NodeJS的二进制数据,或者在NodeJS中找到相应的几个函数。我对这个BinaryReader类感兴趣的函数是ReadULong
和ReadUShort
。我相信这些意思是读取无符号长整数(4个字节)和无符号短整数(2个字节)。当我试图在NodeJS中找到它们的等价物时,我对这些之间要使用的函数感到困惑:
buf.readUInt16LE(offset, [noAssert])
buf.readUInt16BE(offset, [noAssert])
buf.readUInt32LE(offset, [noAssert])
buf.readUInt32BE(offset, [noAssert])
在这种情况下LE
或BE
代表什么?
此外,我在PHP类中找到了const DEFAULT_BYTE_ORDER = 'L';
的常量。这个L
与L
中的readUInt32LE
相同吗?是关于Byte Orders的全部内容吗?
到目前为止,我已经阅读了这些文章:
如果我可以获得更多关于二进制阅读的参考资料,那将非常感激!
答案 0 :(得分:4)
BE和LE代表大端和小端。在big endian中,最重要的字节存储在最小的地址中,而在little endian中,最低有效字节存储在最小的地址中。话虽这么说,endian确实指示了字节顺序。您可以在文档中的一个示例中看到该模式:
var buf = new Buffer(2);
buf[0] = 0x3;
buf[1] = 0x4;
buf.readUInt16BE(0);
buf.readUInt16LE(0);
// 0x0304
// 0x0403