Gast
#3001535
Hi Community, ich hab folgendes Problem: Ich habe eine 8Bit AVR MCU und wenn ich nun eine Variable vom Typ uint32_t habe und sowas mache: uint32_t counter = 0x1a2b3c4d; dann legt er es so im Speicher ab: 4d3c2b1a Also ist das wohl Little Endian. Das Problem ist aber, dass ich ein Netzwerkprotokoll implementiere und da brauche ich Big Endian. Gibt es da jetzt einen einfachen Weg um das zu erreichen? Ich könnte jetzt zwar statt eines uint32_t einfach ein Array mit vier uint8_t nehmen, aber wenn ich dann z.b. nen Counter habe und den erhöhen will, muss ich den Counter ja dann "manuell" implementieren, also etwa so: counter[0]++; if(counter[0] == 0) counter[1]++; if(counter[1] == 0) counter[2]++; if(counter[2] == 0) counter[3]++; Alternativ könnte ich natürlich erst mal mit nem uint32_t arbeiten und ganz normal inkrementieren und damit rechnen und muss es dann umkopieren nach dem Motto: counter_8[0] = (counter_32 >> 24); counter_8[1] = (counter_32 &0xFF0000) >> 16; counter_8[2] = (counter_32 &0xFF00) >> 8; counter_8[3] = (counter_32 &0xFF); aber das finde ich auch unschön. Gibt es da noch nen eleganteren Weg?