Forum: PC-Programmierung Array das uint8_t Arrays enthält


von Seb (Gast)


Lesenswert?

Hallo,

wie erstelle ich ein Array, das z.B. 100 Arrays vom Typ uint8_t mit der 
Größe 4 beinhaltet. Hatte so etwas wie hier versucht, aber dabei wird 
immer nur das erste Byte ausgegeben. Für Tipps oder Links wäre ich sehr 
dankbar.
1
#include <stdio.h>
2
#include <stdint.h>
3
4
int main(void)
5
{
6
  uint8_t word[2][4];
7
  
8
  word[0][0]= 0xff;
9
  word[0][1]= 0xff;
10
  word[0][2]= 0xff;
11
  word[0][3]= 0xf1;
12
  
13
  word[1][0]= 0xff;
14
  word[1][1]= 0xff;
15
  word[1][2]= 0xff;
16
  word[1][3]= 0xf2;
17
  
18
  printf("%d\n", (int32_t) *word[0]);
19
  printf("%d\n", (int32_t) *word[1]);
20
  
21
  return 0;
22
  
23
}
1
int main(void)
2
{
3
  uint8_t* pos;
4
  uint8_t word[8];
5
  
6
  word[0]= 0xff;
7
  word[1]= 0xff;
8
  word[2]= 0xff;
9
  word[3]= 0xf1;
10
  word[4]= 0xff;
11
  word[5]= 0xff;
12
  word[6]= 0xff;
13
  word[7]= 0xf2;
14
  
15
  pos = word;
16
  
17
  printf("%d\n", (int32_t) *pos);
18
  pos+=4;
19
  printf("%d\n", (int32_t) *pos);
20
  
21
  return 0;
22
  
23
}

von Karl H. (kbuchegg)


Lesenswert?

> printf("%d\n", (int32_t) *word[0]);

So geht das nicht.

      word[0]         die Adresse des ersten Eintrags von word[0][0]
                      das ist also ein uint8_t*

     *word[0]         jetzt holst du dir dieses 1 Byte

   (int32_t) *word[0] und wandelst es zu einem int32_t

Logisch kriegst du nur das 1. Byte. Das ist genau das, was du 
geschrieben hast.

Du wolltest vielleicht schreiben

    *((int32_t*)word[0])

hast du aber nicht.


Im übrigen schätze ich mal, dass dein Problem einfacher wird, wenn du 
das tust, was du scheinbar tun willst: Ein Array von 4-Byte int32_t 
Werten anlegen

int32_t Wert[2];

Und an den Stellen an denen du das Array mit den Bytes beschickst, 
kümmerst du dich darum, dass du aus den 4 einzelnen Bytes erst mal einen 
int32_t machst.

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.