www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Suche C-Funktion DEZ --> HEX umwandeln


Autor: Mike (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Weiss jemand wo ich eine Funktion finde, mit der ich einen Dezimal Wert
in einen HEX Wert wandeln kann? (Programmierung CODEVISIONAVR)

Vieln Dank!

Autor: Mike (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
bzw. von HEX in DEZ.

Autor: Tobi (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: Mike (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Zotteljedi (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Zotteljedi (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.