4 byte hex into 2 2byte hex
-
hallo zusammen ich habe folgende hexValues vorliegen:
int hexVal1 = 0x000A; int hexVal2 = 0x00AB; int hexVal3 = 0x0ABC; int hexVal4 = 0xABCD;
und würde diese gerne in ein hi und low byte splitten, also zB so:
/* bsp val3 */ unsigned char hiByte = 0x0A; unsigned char loByte = 0xBC;
wie bekomm ich denn das am besten hin, oder gibt es denn da schon etwas in der stdlib?
p.s. arbeite unter linux und steh grad voll aufm schlauch ...
-
Mit Bitshifts und Bitmasken geht das wunderbar.
-
unsigned char hi = (hexVal3 & 0x0000FF00) >> 8; unsigned char lo = hexVal3 & 0x000000FF;
-
hm.....
damit kenn ich mich mal gar net aus. Hab das mit den bitmasken und bitschiebereien noch net so oft gebraucht.sind auch nur bspValues.
aber komm net drauf wie ich das anstellen könnte.
-
oh, da war einer schneller *g*
*klick*
dankeschön
-
sie dir das mal an: http://de.wikipedia.org/wiki/Logische_Operatoren dort findest du ne uebersicht ueber die jeweiligen operatoren
-
Hallo!
Ich bin da auf nicht ganz so sicheren Terrain, habe aber nochmal ein paar Anmerkungen.
Erstens:
2 Byte hex: 0x0A ist für mich ein Byte...., kannst Du ja auch in unsigned char packen.Zweitens:
Länge von int. Ich weiß nicht welche Plattform Du benutzt, aber falls es für PC ist, ist Dein int wahrscheinlich 4 Byte lang. Das spräche für Airdmans Lösung.Drittens:
Warum nicht so etwas:union intSplit{
int i;
unsigned char c[sizeof int];
};Also, jetzt Attacke auf meine Anmerkungen ;-).
Grüße
Richie
-
Richie_Gecco schrieb:
Drittens:
Warum nicht so etwas:union intSplit{
int i;
unsigned char c[sizeof int];
};Also, jetzt Attacke auf meine Anmerkungen ;-).
Grüße
RichieDiese Variante berücksichtigt nicht die unterschiedliche Byteorder auf verschiedenen Systemen.
-
Okay...
Jetzt behaupte ich: man kann aber folgendes machen:
#define hi 1 #define lo 0
Ich muss ja keine feste Indizierung machen....
Warum muss ich bit-Operatoren darauf laufen lassen? So änder ich nur die Adressierung. Okay, ich sehe ein, dass bit-Operatoren sehr performant sind. Ist diese Variante mir der Union nicht performanter?
Fragen über Fragen...