Hallo, ich habe einen Sendepuffer. Dieser ist in 32 Bit Werten organisiert. Mittels einer Funktion kann ich mir einen Zeiger auf diesen Puffer ausgeben lassen: uint32_t *Get_BufferPtr(); Wenn ich nun etwas in diesen Puffer schreiben will, zB so: uint32_t *buffer; buffer = Get_BufferPtr(); buffer[0] = 'H'; buffer[1] = 'a'; buffer[2] = 'l'; buffer[3] = 'l'; buffer[4] = 'o'; Schaut das Ganze im Speicher hinterher so aus: H000a000l000l000o000 Soweit ja logisch, immerhin schreibe ich jedesmal einen 32Bit Wert. Um also "Hallo" hineinzuschreiben muss ich irgendwie casten. Nur da happerts. So hab ichs bisher probiert: ((uint8*) buffer)[i] = ...; ((uint8*) buffer[i]) = ...; Beides hilft nichts. Ich würde aber gerne den Puffer in 8Bit Schritten beschreiben können. Kann mir da jemand weiterhelfen? Viele Grüße, Rudi
1 | uint8_t *buffer; |
2 | buffer = (uint8_t*)Get_BufferPtr(); |
3 | |
4 | buffer[0] = 'H'; |
5 | buffer[1] = 'a'; |
6 | buffer[2] = 'l'; |
7 | buffer[3] = 'l'; |
8 | buffer[4] = 'o'; |
Rudi schrieb: > Dieser ist in 32 Bit Werten organisiert. Dann mußt Du beim byteweise beschreiben die Byte-Order (Little-Endian, Big-Endian) Deines Controllers beachten.
Rudi schrieb: > ((uint8*) buffer)[i] = ...; So müsste es gehen. (Abgesehen davon, dass der Datentyp uint8_t heißt.)
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.