Suche C-Funktion DEZ --> HEX umwandeln

Gast #146762
Lesenswert?

ganz sicher willst du von binär in irgendetwas umwandeln, denn für uP
aller art gibt es nur binär werte.
benutz mal die suche zum thema bcd, sonst ist 5 einträge unter diesem
das genau gleiche thema...
Gast #146764
Lesenswert?

Er meint, daß der Prozessor sowieso nur binäre Zahlen sieht, was
dezimal, oktal oder hexadezimal ist, ist die Repräsentation in Ziffern,
die als Benutzerschnittstelle dient.

0x20, 32 und 040 sind alles die gleiche Zahl, nur unterschiedliche
Darstellungen.

Je nachdem was Du willst, ist eine der printf-Ausführungen vielleicht
eine Hilfe. Ein strtol und strtoul kann für die Gegenrichtung auch
Zahlendarstellungen zu beliebiger Basis (bis 36 IIRC) annehmen und eine
Zahl im Sinne der CPU daraus machen.

Das ganze ist aber auch g'schwind selbst programmiert, wenn man mal
ein paar Minuten drauf verschwendet zu überlegen, wie man denn selbst
umrechnet. Das ist durch ganzzahlige Division und Modulo eine Sache von
einer Schleife, einem Array, zwei oder drei Indizes oder ein paar
Zeigern. Vor allem aber ist es weniger widerlich als der ganze
Overhead, der bei einer sprintf-Kaskade anläuft.
Gast #146765
Lesenswert?

Mich juckt's ja immer in den Fingern sowas möglichst kompakt zu lösen.
Wer sich um den Lernspaß des Selberfindens bringen möchte, der kann
sich meine Lösung ansehen, die einen int zu einer ASCII-Darstellung zu
den Basen 2..16 verwurstet und im Dezimal-Fall das Vorzeichen
berücksichtigt (also die gleichen Ausgaben wie %o %i %x erzeugt).

Getestet auf i386 mit gcc! Ich nehme aber mal an, daß das überall
gleich laufen wird, zumindest sind keine fiesen Tricks drin.

Für diejenigen, die das hier per Foren-Suche gefunden haben (ich glaube
noch immer daran) und es nicht bemerkt haben: die Umkehrrichtung ist
strtol bzw. strtoul, und diese sind Bestandteil der Standardbibliothek.
Angehängte Dateien:

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren