[Résolu] SWAP des octets
ancrou
Membre
Bonjour,
Je lis dans un fichier 3F8A est je veux swapping en 8A3F. Voilà mon code :
J'obtiens :
Où est le problème ?
Merci
Je lis dans un fichier 3F8A est je veux swapping en 8A3F. Voilà mon code :
UI16_ crc; //Check sum<br /> int index = 0;<br /> [mData getBytes:&crc range:NSMakeRange(index, sizeof(crc))];<br /> index += sizeof(crc);<br /> printf("crc avant SWAP %X \n",crc);<br /> crc=NSSwapBigIntToHost(crc);<br /> printf("crc après SWAP %X \n",crc);
J'obtiens :
crc avant SWAP 3F8A
crc après SWAP 3F8A
Où est le problème ?
Merci
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
(ou l'inverse, mais j'ai pas le courage de réfléchir pour savoir dans quel sens ça joue là :P)
Habituellement le PPC ne permute pas et Intel, oui.
Mais mon fichier est comme ça Intel ou pas !
Donc si tu fais tourner ça sur du big-endian (donc les PPC utilisés sur les " anciens " Mac - l'inverse de ce que j'ai dit plus haut), ça ne fera rien...
Pour le moment, je dois faire du calcul sur ces valeurs (Check sum, pointer ...).
Pensez vous que je dois les manipuler tel quel, sans les permuter ( faire du big-endiann)?
Sur Mac-PPC, oui ; sur Mac-Intel, il faut permuter...
D'où l'utilité de la fonction NSSwapBigIntToHost, sinon autant appeler directement NSSwapInt
size=NSSwapLittleLongToHost(size);
Car mon fichier est en BIg et je passe en Little
Merci de votre aide
Ah ben non, si le fichier est en big-endian, il ne faut pas utiliser SwapLittleLongToHost, mais SwapBigLongToHost.
Oui; je m'embrouille avec Little et Big...
Comme mon fichier à les octets faible sont en 1er (à gauche). c'est du little-endian
J'ai un PowerPC qui réfléchit en Big-endian (comme moi).
Ah ben depuis tout à l'heure tu dis que ton fichier est en Big :P
Donc s'il est en Little, c'est bien ça... NSSwapLittleLongToHost, et sur PPC ça va faire le swap.
Comme tu avais mis NSSwapBigIntToHost, normal qu'il n'ait rien fait dans le code du premier post...