LaTatadu91
Messages postés968Date d'inscriptionjeudi 20 mai 2004StatutMembreDernière intervention26 avril 2013
-
25 août 2010 à 14:10
LaTatadu91
Messages postés968Date d'inscriptionjeudi 20 mai 2004StatutMembreDernière intervention26 avril 2013
-
26 août 2010 à 13:05
Bonjour,
Lors d'un projet je dois programmer un serveur TCP/IP en C++ qui échange des télégrammes avec un client.
Le problème est que le client m'envoi un telegramme du type
struct data
{
int toto;
float tata;
char titi;
}
mais sa structure est "définie" en little endian.
J'ai peur d'avoir une inversion de bits, y a t'il une fonction permettant de switcher ma structure entière?
racpp
Messages postés1909Date d'inscriptionvendredi 18 juin 2004StatutModérateurDernière intervention14 novembre 201417 26 août 2010 à 13:02
Salut,
Sur un PC avec Windows c'est Little Endian. Car en fait, il y a deux niveaux. Le processeur et le système d'exploitation. Les processeurs Intel, donc ceux d'un PC, sont tous Little Endian alors que d'autres comme chez Motorola sont Big Endian. Windows est lui aussi Little Endian. C'est un choix fait pendant la conception du système d'exploitation. Microsoft aurait pu opté pour le Big Endian car avec leur système de gestion de la mémoire virtuelle ils avaient le choix. Cependant, l'accès physique à la mémoire avec les processeurs Intel se fait toujours en Little Endian.
Il y a trois fonctions permettant de convertir un nombre en Little ou Big Endian:
_byteswap_ushort()
_byteswap_ulong()
_byteswap_uint64()
Pour les float, il est possible de le garder tel qu'il est ou sinon utiliser _byteswap_ulong(). Pour les double se serait _byteswap_uint64().
LaTatadu91
Messages postés968Date d'inscriptionjeudi 20 mai 2004StatutMembreDernière intervention26 avril 20131 26 août 2010 à 11:00
Personne?
dites moi au moins si c'est possible, je stress là!
ya pas une fonction C++ qui permettent l'inversion de bits même si ej dois faire ça entier par entier, ou float par float?
LaTatadu91
Messages postés968Date d'inscriptionjeudi 20 mai 2004StatutMembreDernière intervention26 avril 20131 26 août 2010 à 13:05
Super! je te remercie, j'avoue avoir pris peur mais en fait, j'avais confondu et oublier mes cours ;-)
Du coup je n'aurais pas besoin de conversion ! mais merci pour les fonctions elles pourront un jour m'être utile.