binär --> hexadezimal
-
Wie kann ich auf einem Label eine Binärzahl als Hexadezimalzahl ausgeben?
z.B.:
unsigned char bin[8]="11111111";
Label1->Caption= ???
auf dem Label soll dann FF erscheinen!
MFG
-
Du wirst vermutlich nicht darum kommen, den String zumindest selbst zu zerlegen (Vierer-Gruppen) und in einen Integer-Wert (bzw. char) umzuwandeln. Dann kannst du IntToHex (bzw. BinToHex) darauf anwenden.
-
Vierergruppen brauchste dafür nicht.
Es reicht, den String Char für Char durch zu gehen und entsprechend die einsen zu setzen:unsigned char Bin2Dec(const char *bin_byte_charp) { /* Sollte ein Nullzeiger übergeben worden sein, 0 zurückleifern */ if (bin_byte_charp == NULL) return 0; /* Zu bearbeitender Rückgabewert. */ unsigned char dec_uchar = 0xFF; /* Für jedes der 8 Bit den Buchstaben prüfen. */ for (unsigned char bitnummer_uchar = 0;bitnummer < 8;bitnummer_uchar++) { /* Wenn der Buchstabe einer Eins entspricht, das passende Bit setzen */ if (bin_byte_charp[bitnummer_uchar] == '1') { dec_uchar &= ~(0x02 << bitnummer_uchar); } } return dec_uchar; }Achtung: Es ist zwei kleine fehler versteckt, die sich aber mit dem Verständnis für die Funktion einfach finden lassen.
[edit]Ausserdem hat die Funktion ein paar unschöne Angewohnheiten, wenn es nicht nur 0en und 1en sind die im String stehen. [/edit]