Hallo! Weiss jemand wo ich eine Funktion finde, mit der ich einen Dezimal Wert in einen HEX Wert wandeln kann? (Programmierung CODEVISIONAVR) Vieln Dank!
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...
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.
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.
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.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.