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