Forum: Mikrocontroller und Digitale Elektronik Inhalt eines Arrays in eine Variable speichern?


von M. G. (ixil96)


Lesenswert?

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?

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Ausrechnen.

von Pandur S. (jetztnicht)


Lesenswert?

Fast. Ein UInt8 belegt 8 bit, ein UInt32 belegt 32 bit. Das bedeutet, 
eine UInt32 kann nur 4 Uint8 beinhalten

von Karl H. (kbuchegg)


Lesenswert?

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];

von Axel S. (a-za-z0-9)


Lesenswert?

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

von Der Andere (Gast)


Lesenswert?

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.

von M. G. (ixil96)


Lesenswert?

Super!

Danke für die Hilfe!

von Stefan (Gast)


Lesenswert?

mach einfach
uint32_var = *(uint32*)&array[0]

dann brauchst du nicht mal alle 6 Bytes

von Gu. F. (mitleser)


Lesenswert?

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
Noch kein Account? Hier anmelden.