PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Int to HEX and Nibble


O-Lee
10.09.2002, 07:52
Ich möchte in der Programmiersprache C folgende Zahlen zunächst nach
HEX wandeln und dann die zwei Nibble der Hexzahl in ASCII-Zeichen
umwandeln.

Bsp:
4,255,66,22,1,12,34,447
wird zunächst zu
$04,$FF,$42,$16,$01,$0C,$22,$01BF
wobei das Dollarzeichen nur die Hexzahl kennzeichnet.
Nun möchte ich jedes Nibble in das dazugehörige ASCII-Zeichen
umwandeln:
$30,$34;$46,$46,$34,$32;$31,$36;$30,$31;$30,$43;$32,$32;$30,$31;$42,$46

Das heisst, aus je einem Zeichen entstehen dann zwei ASCII-Zeichen!

In Pascal gibt es die Funktion IntToHex um den ersten Schritt zu
erreichen.

Wie kann ich nun aber in C dieses Problem lösen????
Wie gesagt:
1. Eine Dezimalzahl nach Hex wandeln.
2. Eine Hex-Zahl in 2 Nibble zerlegen und jedes Nibble in sein
ASCII-Zeichen umwandeln.


xOOn
10.09.2002, 08:26
der c++ builder hat die funktion IntToHex, c++ hat die funktion ansonsten kannst du auch ueber sprintf eine umwandlung machen
---------------
zum anderen a machst du am einfachsten folgenden du maskierst dir ein einzelnes zeichen raus
x = 0x12;
high = x >> 4;
low = x & 0x0F;

ok dann schaust du ob high/low > 0x09 ist

if (high/*low*/ > 9)
c = high/*low*/ + '0';
else
c = high/*low*/ + 'A';

und das wars!!

wenn du noch fragen hast oder ein sample brauchst dann sag bescheid

O-Lee
10.09.2002, 09:29
Ja super,

dann mal danke für die schnelle Antwort.
Hat mir schonmal was geholfen...

Ich werde das jetzt mal ausprobieren...


Bei fragen wende ich mich einfach nochmal an dich


Gruß und Dank
Oliver

Bolle
10.09.2002, 14:09
was is denn nibble?

Felix Kaiser
10.09.2002, 14:28
Er meint mit Nibble die erste und die zweite Ziffer des 8-Bit Hexwertes, sprich: Die oberen 4 Bit und die unteren 4-Bit.