Lors de l'envoi de données via le réseau, la conversion des données en octets peut se faire de plusieurs manières :
12345 --> {0 0 48 57}
typedef unsigned char byte;
//1. Bit shift
int32_t shiftedInteger = (int32_t) (inBytes[0] << 24 | inBytes[1] << 16 |
inBytes[2] << 8 | inBytes[3]);
//2. Reinterpret cast
int32_t reinterpretedInteger = *reinterpret_cast<int32_t*>(&inBytes);
//3. Using unions
union{
byte b[4];
int32_t i;
}unionCast;
memcpy(unionCast.b,inBytes,4);
int_32t unionCasted = unctionCast.i;
Quelle est la meilleure façon de convertir les données (utilisation sur un microprocesseur de type arduino) ?
Les méthodes union et reinterpretCast sont confrontées au problème des grands et petits endians, mais elles s'avéreront utiles pour travailler avec des nombres à virgule flottante, car de simples décalages de bits ne suffiront pas à reconvertir les données. Comment puis-je permuter les endians lorsque j'utilise la méthode reinterpret_cast ?