Hallo!
Ich habe weniger ein Problem, eher eine Frage: Warum in diesem Programm
struct Data{
int16_t x;
int16_t y;
uint8_t hp;
};
Data data;
void setup() {
Serial.begin(115200);
Serial.println(sizeof(Data));
uint8_t* pointer = (uint8_t*)&data;
for(byte i = 0;i < sizeof(Data);i++){
if(!(pointer[i] >> 4)) Serial.print("0");
Serial.print(pointer[i], HEX);
Serial.print("\t");
}
Serial.println();
data.x = 1000;
data.y = 0x1234;
data.hp = 100;
for(byte i = 0;i < sizeof(Data);i++){
if(!(pointer[i] >> 4)) Serial.print("0");
Serial.print(pointer[i], HEX);
Serial.print("\t");
}
}
void loop() {
// put your main code here, to run repeatedly:
}
, welches ich auf der Suche nach einer Möglichkeit, die Byte-Werte aus einer Instanz auszulesen, gibt an, dass sizeof(Data) 6 ist, dabei hat Data eine Größe von nur 5 Bytes. Klar, ich könnte einfach überall -1 rechnen, aber mir geht es darum, dass ich wissen will, warum das passiert. Außerdem würde das bedeuten, dass ich bei Arrays aus tausenden kleinen structs tausende Bytes verliere. Ich habe auch mal alle struct-Variablen gelöscht, wodurch die Größe ja 0 sein müsste, und sizeof(Data) ergab 1. Und ich habe es auch mit sizeof(data) probiert, da kam überall das Gleiche (Selbe?) raus. Weiß jemand von euch darüber mehr als ich?
Gruß
HTML-Fan