Moi, si la spec me dit qu'il faut ecrire un entier non signe en 4 octets represente chacun par un caractere en big endian je fais (en coupant la verification des erreurs):Envoyé par Médinoc
et ce code fonctionne sur du big endian, du little endian, ... n'importe quoi et il me semble qu'en plus le code correspond clairement a la spec. Pour lire, je fais (en coupant a nouveau la verification des erreurs)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 void writeWord(std::istream& is, unsigned long w) { is.put((w / 0x1000000) % 0x100); is.put((w / 0x10000) % 0x100); is.put((w / 0x100) % 0x100); is.put((w ) % 0x100); }et a nouveau il me semble qu'il y a une bonne correspondance avec la spec et que le code est correct partout. Je n'utilise les htonX et ntohX qu'avec les fonctions des sockets puisque la spec dans ce cas c'est d'utiliser le resultat de ces fonctions.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 unsigned long readWord(std::istream& is) { unsigned long result = is.get(); result = result * 0x100 + is.get(); result = result * 0x100 + is.get(); return result * 0x100 + is.get(); }
Partager