Je travaille toujours sur un auditeur ICMP fonctionnant correctement et je suis curieux de savoir comment gérer l'endianness. Ma première approche consistait à extraire les données de la mémoire tampon dans un champ approprié (array initialement) (uint etc.), puis à inverser l'ordre des octets avant de transmettre les données au membre BitConverter approprié. Bien que cela fonctionne, ce n'est pas très élégant.Comment faire face à 'Endianness'
La deuxième approche consistait à préparer le tampon entier entraîné par un réseau bidimensionnel, contenant la position et la longueur des champs, qui doivent être ajustés. Cela fonctionne aussi, avec un avantage supplémentaire que le code existant n'a pas besoin de changements, mais il manque (sévèrement) de lisibilité. Je fais un effort pour comprendre les nouveaux environnements de programmation disponibles aujourd'hui (en particulier .Net et C#), et je suis très surpris que les problèmes qui existaient en 1975 ne soient toujours pas traités de manière appropriée. J'ai eu l'une des premières cartes réseau (ISA) (ciblées pour Ethernet 1.0 et basées sur un processeur Motorola 68000) développée pour un PC (IBM) et je me souviens clairement des problèmes impliqués; pas seulement des types de base de mots multiples, mais toutes les données se trouvaient dans des «endiannnes» différentes (mots de 16 bits), ce qui a effectivement éliminé la possibilité d'obtenir des données «DMA». Je considère que c'est un très petit effort de la part d'une carte réseau, pour ajuster les données appropriées à son environnement, mais cela ne semble pas être un gros problème pour le résoudre de cette façon. (?)
Ligne de fond; Je ne peux pas croire que je sois le seul à supporter cela et j'espère sincèrement que quelqu'un a trouvé une meilleure solution que celles que j'utilise maintenant.
(ce texte traduire avec l'aide de Google translate (comme je suis Néerlandais))
Non seulement vous êtes accablé par ce problème :-) Voir http://stackoverflow.com/questions/217980/c-little-endian-or-big-endian as bien. – Vlad