Forum: Compiler & IDEs Wert in array ablegen


von Partick84 (Gast)


Lesenswert?

Hallo kann mir jemand eine elegante Art nennen um einen 32 bit Wert in 
einen array von vier mal 8 bit abzulegen?

von ernst (Gast)


Lesenswert?

So: SPEICHER[ADRESSE]=WERT;

In welcher Sprache denn bitte?

von Partick84 (Gast)


Lesenswert?

In c ich weis nicht wie ich den 32 bit Wert am besten in 8 bit Werte 
aufsplitte.

von ernst (Gast)


Lesenswert?

Ich hab' zwar von "C" keine große Ahnung, aber so - oder so ähnlich - 
sollte es funktionieren:

v0 = (value32 >> 24);
v1 = (value32 >> 16) & 0xFF;
v2 = (value32 >> 8) & 0xFF;
v3 = value32 & 0xFF;

von Mike R. (thesealion)


Lesenswert?

wie wäre es mit:
1
typedef union {
2
uint8_t  Teile[4];
3
uint32_t Ganzes;
4
} splitting;

Dann kannst du in das "Ganze" schrieben und die "Teile" lesen oder 
umgekehrt.

von Tom K. (ez81)


Lesenswert?

Union:
1
#include <stdio.h>
2
#include <inttypes.h>
3
4
typedef union
5
{
6
  uint8_t b[4];
7
  uint32_t i;
8
} foo_t;
9
10
int main(void)
11
{
12
    foo_t bar;
13
    bar.i = 0x12345678;
14
    printf ("0x %x %x %x %x\n", bar.b[3], bar.b[2], bar.b[1], bar.b[0]);
15
    /* Ergebnis: 0x 12 34 56 78 */
16
    return 0;
17
}
Edit: Mist, zu langsam.

von Partick84 (Gast)


Lesenswert?

Super danke das geht.

von Martin (Gast)


Lesenswert?

Nein, das ist undefined behaviour. ernst hat gezeigt, wie es richtig 
geht.

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.