Gast
#146760
Hallo! Weiss jemand wo ich eine Funktion finde, mit der ich einen Dezimal Wert in einen HEX Wert wandeln kann? (Programmierung CODEVISIONAVR) Vieln Dank!
|
Anzeige
|
Suche C-Funktion DEZ --> HEX umwandeln
Gast
#146760
Hallo! Weiss jemand wo ich eine Funktion finde, mit der ich einen Dezimal Wert in einen HEX Wert wandeln kann? (Programmierung CODEVISIONAVR) Vieln Dank!
Gast
#146761
bzw. von HEX in DEZ.
Gast
#146762
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
#146763
Hallo Tobi! Was meinst du mit binär? Ich möchte z.B. nur einen Dezimalwert 16 umwandeln, so dass der Hexwert 10 umgerechnet wird.
Gast
#146764
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
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. Antwort schreibenBitte melde dich an, um einen Beitrag zu schreiben. |
Anzeige
|