Forum: Compiler & IDEs beliebiges Byte aus void* Datenmenge auslesen


von delicious_cake (Gast)


Lesenswert?

hallo

ich habe eine pointer auf eine speicheradresse. dort liegen 3 Byte 
hintereinander. wie kann ich jedes dieser 3 Byte in ein uint_8 variable 
speichern?

Mein Pointer an dem sich die Daten befinden ist so definiert:
1
const void* ReportData

ich würde gerne die daten in
1
uint_8 byte1, byte2, byte3;

wie kann ich das realisieren?

danke

von Peter (Gast)


Lesenswert?

const void* ReportData;

uint_8 byte1 = *(((uint_8*)ReportData)+0)
uint_8 byte2 = *(((uint_8*)ReportData)+1)
uint_8 byte3 = *(((uint_8*)ReportData)+2)

so in der art

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Das geht mit einem type cast.
1
const void* ReportData;
2
3
uint8_t byte1, byte2, byte3;
4
5
uint8_t* pData;
6
7
pData = (uint8_t *) ReportData;
8
9
byte1 = pData[0];
10
byte2 = pData[1];
11
byte3 = pData[2];

Oder, um den Hilfspointer pData nicht zu benötigen:
1
const void* ReportData;
2
3
uint8_t byte1, byte2, byte3;
4
5
byte1 = ((uint8_t *) ReportData)[0];
6
byte2 = ((uint8_t *) ReportData)[1];
7
byte3 = ((uint8_t *) ReportData)[2];

von delicious_cake (Gast)


Lesenswert?

ausgezeichnet, danke für die hilfe

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.