Forum » » Création-Développement » » Ecriture - lecture fichier sur plateformes différentes
Posté : 12-12-2014 16:30
Exactement comme le dis Corto tu dois lire ton fichier donnée par donnée et non pas une struct entiére sinon tu risque des problèmes
cad que si ta struct est ainsi dans ton fichier
struct toto{
ULONG x;
WORD n;
UBYTE flag;
};
struct toto T;
Il faut faire
T.x =GetLong(FB);
T.n =GetWord(FB);
T.flag =GetByte(FB);
Au préalable j'ai chargé tout le fichier en mémoire dans un buffer et FB est ma structure qui me dit ou j'en suis de sa lecture
>Juste un point, sur ARM, l'ordre des octets est-il similaires à Intel ou Motorola ?
Qu'importe utilise le code ci dessus qui detecte mon ComputerByteOrder et ça marche à tout les coups
Alain
PS:
sur l'alignement des struct il existe des directives pour s'en passer comme
#pragma pack(2)
voir la doc des compilo
On peut aussi rajouter du "padding" aux structs perso pour les aligner de force à 32 bits
struct toto{
ULONG x;
WORD n,pad;
UBYTE flag,pad1,pad2,pad3;
};
Mais de toute façon lire des struct entiére dans le fichier est une mauvaise idée car il faudra réordonner les valeurs quand même donc les relire/écrire
Cet article provient de Le site des utilisateurs francophones actuels et futurs d'AmigaOS 4.x
https://amiga-ng.org/viewtopic.php?topic=1992&forum=14