Quelle est la signification de «16 longs» et de «110 mots», quand lit les bits d’un fichier

J’essaie de lire le format de fichier PUD , qui appartient à la carte du jeu warcraft 2 .

Dans l’explication de la structure du fichier, il y a de petites phrases que je ne comprends pas.

Quelle est cette moyenne ( 16 longs , 110 words ) ?

Voici un exemple

16 longs ——-> Unités et bâtiments autorisés. (16 joueurs)

 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 

Est-ce que cette moyenne 16 longs = 16*4Bytes = 64 ou 16*32Bits = 512 ou autre.
Aussi la même chose avec 110 words .

Ils font référence à des types C sur une architecture particulière. En C, long est un type de variable. Sa taille varie en fonction du compilateur, mais dans ce cas, il s’agit d’une valeur 32 bits. Les mots sont des mots de processeur, qui sont typiquement 32 bits dans le langage moderne. Cependant, Warcraft 2 a été écrit il y a longtemps et fonctionne sur des machines 16 bits. Comme Sean l’a souligné dans un commentaire, les mots ont 16 bits dans ce contexte.

Pour répondre à la question dans le commentaire:

16 longs = 16 * 32 bits = 512 bits = 64 octets.

110 mots = 110 * 16 bits = 1760 bits = 220 octets.

Je n’ai jamais su que “16 longs, 110 mots” avait une signification particulière, à l’exception des nombres longs de 64 bits et des mots de données de 32 bits. Je voudrais effectuer quelques expériences et voir quelles valeurs sont contenues dans les 16 premiers morceaux de 8 octets, puis 110 morceaux de 4 octets, pour voir si les valeurs sont relativement cohérentes.

Si, en regardant les valeurs de mot, vous voyez un bit comme dans votre tableau ci-dessus, alors vous le lisez probablement. Cependant, en règle générale, il n’ya aucun moyen de savoir avec certitude si vous avez raison pour ce genre de choses, mais seulement des façons de savoir si vous avez tort.

Edit: Bien sûr, les tailles ont changé au fil des ans et “long” peut être de 4 octets, pas de 8. De même, les mots seraient de 2 octets, pas de 4.