Wie zum extrahieren von 2 bytes aus einem Wort, und wie ein Wort von 2 Byte (in C)?

Ich versuche zu extrahieren, die beiden bytes eines 16-bit-Wort, und eine 16-bit-Wort aus zwei bytes. Dies ist, was ich versucht habe (byte = unsigned char, word = unsigned short):

Split grpix Wort in 2 Byte:

word grpix; //Assume that the value has been initialized

byte grpixl = grpix & 0x00FF;
byte grpixh = grpix & 0xFF00;

Machen grpix Wort aus 2 bytes

byte grpixh; //Assume that the value has been initialized
byte grpixl; //Assume that the value has been initialized

word grpix = grpixh;
grpix <<= 8;
grpix += grpixl;

Aus irgendeinem Grund, mein code funktioniert nicht wie erwartet, und ich bin mir jetzt nicht sicher, ob die "Teilung" das Wort ist falsch, wenn die "macht" des Wortes ist falsch, oder beides... Könnten Sie mir einige Ratschläge geben?

Sind Sie sicher, dass Sie auf einer big-endian-Maschine? Intel-chips sind little-endian.
Big-endian-oder kleinen-endian?
Gut, mein notebook hat ein Intel-chip.
Diese StackOverflow-Eintrag kann helfen: stackoverflow.com/questions/14950366/...

InformationsquelleAutor Fernando Aires Castello | 2013-02-21

Schreibe einen Kommentar