ymca2003
Messages postés2070Date d'inscriptionmardi 22 avril 2003StatutMembreDernière intervention 3 juillet 2006
-
2 mai 2006 à 13:05
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019
-
2 mai 2006 à 14:40
Bonjour à tous,
Je suis tombé récemmnt sur un truc bizarre :
Dans un code source compilé avec Borland C++ 4.5, il y avait des trucs du genre :
#define SIGNATURE 'BM'
qui étaient utilisés lors de l'écriture dans des fichiers pour pouvoir "signer" le contenu
WORD wSig = SIGNATURE;
WriteFile(hf, &wSig, sizeof(WORD), &dwBytesWritten, NULL);
Ca marche nickel, les fichiers générés était relus et les signatures trouvées.
En compilant le même source avec Visual C++ 2003, les WORD contenant les signatures ne peuvent plus
être comparé avec #define SIGNATURE 'BM', il a fallu faire :
#define SIGNATURE 'MB'
les 2 octets sont inversés entre les 2 compilos
N'ayant plus sous la main Borland, je peux pas checker le pb. Ja'i juste les fichiers générés par l'ancienne version.
D'où ma question :
- Est-ce que la notation 'BM' est standard (c'est censé prendre les 2 chars et les mettre sur 16 bits, mais l'ordre est-il standard ?)
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 2 mai 2006 à 14:40
Je ne sais pas pour Borland mais VC++ place les octets en respectant l'ordre de l'architecture x86 Intel (little endian) où le 1er est celui de droite.