我有一个 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
代表什么?
Buffer 文档位于 here但我无法找到那些 here 的解释.
我还在 PHP 类中发现了一个常量,它表示 const DEFAULT_BYTE_ORDER = 'L';
。这个 L
和 readUInt32LE
中的那个 L
一样吗?这一切都是关于字节顺序的吗?
到目前为止,我已经阅读了这些文章:
- Good Source at cplusplus.com for looking up variable types.
- PHP bytewise tutorial and binary math
- How to read binary files byte by byte in Node.js在 stackoverflow 提问
如果我能得到更多关于二进制读取的引用资料,我将不胜感激!
最佳答案
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
关于node.js - Buffer 函数中的 BE 或 LE 是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18805083/