C embarqué inversin d'octets
Link31
-
Link12 -
Link12 -
Bonjour,
J'ai un problème sur du C embarqué. J'utilise un simulateur d'OS avec un compilateur GCC (cygwin). Le simulateur est censé simuler une execution sur une cible powerPC750Cxe. dans mon code j'utilise une structure pour stocker des données (octets) que je reçois sur un reseau ethernet; et mon problème est que dans tous les champs de ma structure les lsb et les msb sont inversés. Exemple : j'envoie à mon appli en hexa 0xCAFEDECA la donné 32 bit stockée dans ma structure ou meme ma variable (type entier 32) est 0xCADEFECA. Auriez vous une idée d'où cela peut venir?
J'ai un problème sur du C embarqué. J'utilise un simulateur d'OS avec un compilateur GCC (cygwin). Le simulateur est censé simuler une execution sur une cible powerPC750Cxe. dans mon code j'utilise une structure pour stocker des données (octets) que je reçois sur un reseau ethernet; et mon problème est que dans tous les champs de ma structure les lsb et les msb sont inversés. Exemple : j'envoie à mon appli en hexa 0xCAFEDECA la donné 32 bit stockée dans ma structure ou meme ma variable (type entier 32) est 0xCADEFECA. Auriez vous une idée d'où cela peut venir?
A voir également:
- Combien y a-t-il de bits et d'octets, au total, ci-dessous ? 0100101101101001 0111100101101111 0110101101101111
- Winrar 64 bits - Télécharger - Compression & Décompression
- 32 bits - Guide
- Clé windows 10 pro 64 bits gratuit - Guide
- Total uninstall - Télécharger - Divers Utilitaires
- Sarl et cie sca - Accueil - Guide arnaque
2 réponses
Bonjour, c'est un problème d'endianness https://en.wikipedia.org/wiki/Endianness entre les deux machines. Je ne sais pas comment vous envoyez les données et les recevez mais le problème vient de là à mon avis. Créez un protocole pour vos données ne les envoyez&recevez pas directement dans les sockets tel quel, pour les char ça passe mais les int etc..
Pouvez faire le test de conversion big et little endian là : http://www.darkfader.net/toolbox/convert/ en utilisant la section "Integer, IPv4 address"
Edit : café déca c'était au pif ou voulut ?
Pouvez faire le test de conversion big et little endian là : http://www.darkfader.net/toolbox/convert/ en utilisant la section "Integer, IPv4 address"
Edit : café déca c'était au pif ou voulut ?