C 从文件中读取位时,“16个长”和“110个字”的含义是什么

C 从文件中读取位时,“16个长”和“110个字”的含义是什么,c,binaryfiles,bits,C,Binaryfiles,Bits,我正在尝试读取PUD文件格式,它们属于魔兽争霸2游戏地图 在对文件结构的解释中,有一些小短语我不理解 这是什么意思(16长,110字)? 以下是一个示例 允许使用16个长------->单元和建筑物。(16名球员) 这是指16长=16*4字节=64还是16*32位=512或其他。 同样,对于110个单词,它们指的是特定体系结构上的C类型。在C语言中,long是一种变量。它的大小随编译器的功能而变化,但在本例中,它是一个32位的值。字是处理器字,在现代说法中通常为32位。然而,魔兽争霸2是很久以前

我正在尝试读取
PUD
文件格式,它们属于
魔兽争霸2
游戏地图

在对文件结构的解释中,有一些小短语我不理解

这是什么意思
16长
110字

以下是一个示例

允许使用16个长------->单元和建筑物。(16名球员)

这是指
16长
=
16*4字节=64
还是
16*32位=512
或其他。

同样,对于
110个单词

,它们指的是特定体系结构上的C类型。在C语言中,
long
是一种变量。它的大小随编译器的功能而变化,但在本例中,它是一个32位的值。字是处理器字,在现代说法中通常为32位。然而,魔兽争霸2是很久以前写的,在16位机器上运行。正如肖恩在评论中指出的,在这种情况下,单词是16位的

回答评论中的问题:

16长=16*32位=512位=64字节

110字=110*16位=1760位=220字节。

我从来不知道“16长,110字”除了长为64位数字,字为32位数据之外,还有什么特殊含义。我将进行一些实验,看看前16个8字节块和110个4字节块中包含哪些值,看看值是否相对一致

如果通过查看单词值,您在上面的表格中看到一个类似的位,那么您可能正确地阅读了它。然而,一般来说,没有办法确定你在这类事情上是否正确,只有办法知道你是否错了


编辑:当然,大小多年来一直在变化,“长”可能是4字节,而不是8字节。同样地,字将是2字节,而不是4字节

一些谷歌搜索让我想到了这一点:如果它是正确的,那么long指的是4个字节,单词指的是2个字节。谢谢你的回答,评论中的文章链接就是我下面的内容,但我想要一个直接的答案,请
16 long
=?,和
110个单词
=?,我知道单词=16位,long=32位,读n字节还是n*8位有什么关系?但是,你会发现,你无法读取单个位,除非这些数据通过串行接口,并且你的软件支持它。如果“long”与“word”不同,那么我认为他们使用的是16位时代采用的命名约定。8位=1字节,16位=1个字,32位=1个长字(或双字),64位是1个四字。
units bit order:
        0000000000000000000000000000000x        bit0:  footman/grunt
        000000000000000000000000000000x0        bit1:  peasant/peon
        00000000000000000000000000000x00        bit2:  ballista/catapult
        0000000000000000000000000000x000        bit3:  knight/ogre
        000000000000000000000000000x0000        bit4:  archer/axe thrower
        00000000000000000000000000x00000        bit5:  mage/death knights
        0000000000000000000000000x000000        bit6:  tanker
        000000000000000000000000x0000000        bit7:  destroyer
        00000000000000000000000x00000000        bit8:  transport
        0000000000000000000000x000000000        bit9:  battleship/juggernault
        000000000000000000000x0000000000        bit10: submarine/turtle
        00000000000000000000x00000000000        bit11: flying machine/balloon
        0000000000000000000x000000000000        bit12: gryphon/dragon
        000000000000000000x0000000000000        bit13: unused/unused
        00000000000000000x00000000000000        bit14: demo. squad/sapper
        0000000000000000x000000000000000        bit15: aviary/roost
        000000000000000x0000000000000000        bit16: farm
        00000000000000x00000000000000000        bit17: barracks
        0000000000000x000000000000000000        bit18: lumber mill
        000000000000x0000000000000000000        bit19: stables/mound
        00000000000x00000000000000000000        bit20: mage tower/temple
        0000000000x000000000000000000000        bit21: foundry
        000000000x0000000000000000000000        bit22: refinery
        00000000x00000000000000000000000        bit23: inventor/alchemist
        0000000x000000000000000000000000        bit24: church/altar storms
        000000x0000000000000000000000000        bit25: tower
        00000x00000000000000000000000000        bit26: town hall/great hall
        0000x000000000000000000000000000        bit27: keep/stronghold
        000x0000000000000000000000000000        bit28: castle/fortress
        00x00000000000000000000000000000        bit29: blacksmith
        0x000000000000000000000000000000        bit30: shipyard
        x0000000000000000000000000000000        bit31: unused