Hallo miteinander, mich beschäftigt gerade folgendes Problem: Ich habe ein array unsigned char buf[128]; und ein word: unsigned short a; Wie kann ich der Variablen a einen Short mitten aus dem array zuweisen, also sowas wie a = (ich will nen short) buf[0x10]; ?? Wenn ich in die Cast-Klammer unsigned short schreibe kriege ich natürlich nur das eine byte raus... Danke schonmal, Stefan
Das ist auch richtig so, Mach zuerst einen Zeiger auf einen unsigned char daraus und danach Typecast nach unsigned short Zeiger von dem Datenn der Inhalt genommen wird: Also: a = *((unsigned short *) &buf[0x10]); ein paar Anmerkungen dazu: - manche Prozessoren mögen es garnicht wenn auf ungeraden Adressen zugegriffen wird oder sind dann sehr langsam: Bsp: a = *((unsigned short *) &buf[0x11]); - eventuell musst du noch die Bytes vertauschen (Stichwort Big/Little Endian) - Überleg dir ob die Daten nicht besser als struct/union definiert und angelegt sind. Du schreibst leichter: a = buf.wDasWort; - Wenn die Daten als Byte-Array vorliegen du aber trotzdem strukturiert darauf zugreifen willst kann mann ja auch einen Zeiger darauf setzen und dann über den Zeiger zugreifen: struct MeineStruktur *spMeinS = (struct MeineStruktur *) &buf[0]; a = spMeinS->wDasWort; Gruss
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.