high und low Bit aus einzelnem Char ermitteln
-
Hallo,
wie kann ich aus einem ASCI Zeichen das high and low Bit auslesen? Nehmen wir z.B. den Buchsataben 'a' der ja hex so aussieht \x6. Was muss ich jetzt durchführen, damit ich zwei Integer Zahlen die Werte zuweisen kann? Also am Schluss soll dann das Ergebis Zahl_1 = 6 und Zahl_2 = 1 rauskommen, wenn man den char 'a' auswertet?
-
Du meinst nicht high/low Bit sondern high/low Nibble?
-
Kann ich nicht sagen wie es heißt, weil ichs nicht weiß. Was ich meine wie zelege ich ein Byte z.B. 'a' = \x61 damit ich Zahl_1 = 6 und Zahl_2 = 1 erhalte?
-
Na du kannst zumindest nach dem Begriff "Nibble" googlen, oder?
char a,hi,lo; a = 'a' hi = (a & 0xF0)>>4; lo = a & 0x0F;
-
Danke für den hinweis
-
Tim schrieb:
Na du kannst zumindest nach dem Begriff "Nibble" googlen, oder?
[cpp]char a,hi,lo;
a = 'a'
hi = (a & 0xF0)>>4;du brauchst die unteren bits nicht zu löschen (& 0xf0), die werden durch das shiften sowieso überschrieben.
und - vorsicht bei negativen char-werten
-
du vergisst die oberen bits eines eventuell >8-bittigen
char
-
pale dog schrieb:
Tim schrieb:
Na du kannst zumindest nach dem Begriff "Nibble" googlen, oder?
[cpp]char a,hi,lo;
a = 'a'
hi = (a & 0xF0)>>4;du brauchst die unteren bits nicht zu löschen (& 0xf0), die werden durch das shiften sowieso überschrieben.
Ich mach das der imho besseren Lesbarkeit wegen.
pale dog schrieb:
und - vorsicht bei negativen char-werten
Oh ja, guter Hinweis. Wobei ASCII-Zeichen sicher nicht negativ werden
-
c.rackwitz schrieb:
du vergisst die oberen bits eines eventuell >8-bittigen
char
stimmt, in dem fall dann doch '& 0xf0'
-
Wie wärs mit
hi = (a >> 4) & 0x0F;
? Da hats dann auch die signed chars mit erschlagen.