NodeJS 中 DWORD 的等价物是什么?
What is the equivalent of DWORD in NodeJS?
我正在尝试根据为 C# 编写的文档在 NodeJS 中重写协议。
我正在读取索引文件,这里是关于缓冲区布局的描述。
根据我的阅读,DWORD
只是一个 32 位无符号整数。但是,每当我用 indexFileBuffer.readUInt32BE(offset)
读取长度字节时,我得到的长度比预期的要长得多。
显然 readUInt32BE()
不等同于 dword
或 dword
必须根据某些标准进行不同的处理。
任何有关如何正确计算该值的见解都将不胜感激。
从缓冲区获取 DWORD(无符号 32 位整数)的正确函数是:
buf.readUInt32BE(offset)
或
buf.readUInt32LE(offset)
您确实需要知道您的数据是小端还是大端字节顺序,以便select两者的正确选择。
如果您正在使用它并且它没有为您带来预期的价值,那么必须发生以下三种情况之一:
- 您期望在缓冲区中的数据并不存在
- 您没有使用正确的 "endian" 版本
- 您正在读取的缓冲区中的偏移量不正确
仅供参考,Intel 使用小端字节序,ARM 使用大端。更多关于 "endinan-ness" here.
我正在尝试根据为 C# 编写的文档在 NodeJS 中重写协议。
我正在读取索引文件,这里是关于缓冲区布局的描述。
根据我的阅读,DWORD
只是一个 32 位无符号整数。但是,每当我用 indexFileBuffer.readUInt32BE(offset)
读取长度字节时,我得到的长度比预期的要长得多。
显然 readUInt32BE()
不等同于 dword
或 dword
必须根据某些标准进行不同的处理。
任何有关如何正确计算该值的见解都将不胜感激。
从缓冲区获取 DWORD(无符号 32 位整数)的正确函数是:
buf.readUInt32BE(offset)
或
buf.readUInt32LE(offset)
您确实需要知道您的数据是小端还是大端字节顺序,以便select两者的正确选择。
如果您正在使用它并且它没有为您带来预期的价值,那么必须发生以下三种情况之一:
- 您期望在缓冲区中的数据并不存在
- 您没有使用正确的 "endian" 版本
- 您正在读取的缓冲区中的偏移量不正确
仅供参考,Intel 使用小端字节序,ARM 使用大端。更多关于 "endinan-ness" here.