Daten in array ablegen
-
Hallo ich habe eine Fragen. Ich habe einen uint16 Wert und möchte diesen in ein array das uint8 hat ablegen. Kann ich das irgend wie direkt machen oder muss ich jedes mal wie in meinem Beispiel vorgehen?
void Data(InfoType* Info) { Info->EventData[0] =(uint8) ((SigData >> 4) & 0x0F); Info->EventData[1] =(uint8) (SigData & 0x0F); return; }
-
Wenn dein uint16 nicht größer als 255 ist, gibt es kein Problem.
Ansonsten hat ein uint8 durchaus 8 Bit und nicht 4 wie in deinem Beispiel.
Also >>8 und 0xff benutzen.
-
Du könntest auch ein union verwenden:
typedef union{ uint16 data16; uint8 data8[2]; }SIGDATA; SIGDATA SigData; SigData.data16 = 42; void Data(InfoType* Info) { Info->EventData[0] =SigData.data8[0]; Info->EventData[1] =SigData.data8[1]; return; }
-
Oder so:
uint8_t foo[2]; uint16_t bar; *(uint16_t*)(foo) = bar;
-
Was je nach Endianess ein anderes Resultat erzeugt

-
314159265358979 schrieb:
Was je nach Endianess ein anderes Resultat erzeugt

Wieso, ich dachte das wird genauso wieder rausgeholt?
-
Wenn er wieder zusammensetzt, wie er zerlegt, ist es egal. Wenn er mit den einzelnen 8-bit Werten arbeitet, bekommt er verschiedene
