【问题标题】:What is the equivalent of DWORD in NodeJS?NodeJS 中的 DWORD 等价物是什么?
【发布时间】:2019-10-20 22:09:58
【问题描述】:

我正在尝试从为 C# 编写的文档中重写 NodeJS 中的协议。

我正在从索引文件中读取,这里是缓冲区布局方式的描述。

根据我的阅读,DWORD 只是一个 32 位无符号整数。但是,每当我使用 indexFileBuffer.readUInt32BE(offset) 读取长度字节时,我得到的长度比预期的要长得多。

显然readUInt32BE() 不等同于dworddword 必须根据某些标准进行不同的处理。

任何关于如何正确计算价值的见解将不胜感激。

【问题讨论】:

    标签: node.js buffer dword


    【解决方案1】:

    从缓冲区获取 DWORD(无符号 32 位整数)的正确函数是:

    buf.readUInt32BE(offset)
    

    buf.readUInt32LE(offset)
    

    您确实需要知道您的数据是小端字节序还是大端字节序,以便从中选择正确的选项。


    如果您正在使用它,但它没有为您带来您期望的价值,那么一定是以下三件事之一:

    1. 您期望在缓冲区中的数据不是那里的数据
    2. 您没有使用正确的“endian”版本
    3. 您在正在读取的缓冲区中的偏移量不正确

    仅供参考,Intel 使用 little endian 字节排序,ARM 使用 big endian。更多关于“endinan-ness”here.

    【讨论】:

    • 谢谢@jfriend00。根据我一直在阅读的文档,一切都是大端的。我 90% 确定它会归结为 #3,因为您已经确认 readUInt32BE() 是读取数据的适当方式获取的值需要在期间作为另一种类型传递查找,因为这个长度拉的字节数太多了。
    猜你喜欢
    • 1970-01-01
    • 2014-10-10
    • 2014-07-27
    • 2018-10-24
    • 2015-10-03
    • 2021-08-14
    • 2014-05-08
    • 2014-06-12
    • 1970-01-01
    相关资源
    最近更新 更多