Hallo,
ich möchte den Inhalt eines uint8-Arrays in eine uint32-Variable
speichern.
Bsp:
uint8_t array[6] = {1,2,3,4,5,6};
uint32_t = 123456
Wie mache ich das?
Fast. Ein UInt8 belegt 8 bit, ein UInt32 belegt 32 bit. Das bedeutet, eine UInt32 kann nur 4 Uint8 beinhalten
m. g. schrieb: > Hallo, > > ich möchte den Inhalt eines uint8-Arrays in eine uint32-Variable > speichern. > > Bsp: > > uint8_t array[6] = {1,2,3,4,5,6}; > > uint32_t = 123456 > > Wie mache ich das?
1 | result = (utin32_t)array[0] * 100000U + |
2 | (uint32_t)array[1] * 10000U + |
3 | array[2] * 1000U + |
4 | array[3] * 100U + |
5 | array[4] * 10U + |
6 | array[5]; |
Rufus Τ. F. schrieb: > Ausrechnen. z.b. unter Verwendung des Horner-Schemas:
1 | uint32_var= 0; |
2 | for (i=0; i<6; i++) |
3 | uint32_var= uint32_var*10 + array[i]; |
das gleiche mit ausgerollter Schleife:
1 | uint32_var= array[0]; |
2 | uint32_var= uint32_var*10 + array[1]; |
3 | uint32_var= uint32_var*10 + array[2]; |
4 | uint32_var= uint32_var*10 + array[3]; |
5 | uint32_var= uint32_var*10 + array[4]; |
6 | uint32_var= uint32_var*10 + array[5]; |
https://de.wikipedia.org/wiki/Horner-Schema
Was du willst ist die Umwandlung einer Dezimalzahl in eine Binärzahl.
Bist du sicher dass in deinem Array:
uint8_t array[6] = {1,2,3,4,5,6};
nicht steht: {'1','2','3','4','5','6'}?
Egal, auf jeden Fall sind deine Hausaufgaben gelöst.
mach einfach uint32_var = *(uint32*)&array[0] dann brauchst du nicht mal alle 6 Bytes
Stefan schrieb: > mach einfach > uint32_var = *(uint32*)&array[0] Darüber solltest du noch mal nachdenken.
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.