mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Hex zu Dezimal wandeln in c


Autor: Yvonne J. (laserlight)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

ich habe hier letzt in irgendeinem C code eine sehr kurze und einfache 
Lösung gesehen um einen Hexwert(Binärwert) in einen Dezimalwert(BCD) 
umzurechnen. Es war ein zweizeiler in einer while schleife, finde ihn 
nur nicht wieder...

Wenn jemand weiß wo das ist, bitte um Rückmeldung.

Vielen Dank,
Yve

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Tropenhitze (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>eine sehr kurze und einfache Lösung

itoa() ist sehr kurz.

Autor: Yvonne J. (laserlight)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

danke für die Tips, aber ich suchte explizit dieses Beispiel. Ich wollte 
keinen Modulo verwenden und auch keinen String als Ergebnis.

Ich habe meinen Fehler nun gefunden, und es funktioniert.

uint32_t conv_hex2dez (uint16_t hex)
{
    uint16_t div=10000;
    uint32_t add=0x10000;
    uint32_t dez=0;
    while(hex)
    {
        dez+=(add*(hex/div));
        hex-=(div*(hex/div));
        div/=10;
        add/=0x10;
    }
    return dez;
}

Vielen Dank,
Yve

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Yvonne J. schrieb:
> Ich habe meinen Fehler nun gefunden, und es funktioniert.

Na dann schau einmal ins Listing und laß ihn im Simulator laufen.
Du wirst sehen, daß er deutlich größeren Code erzeugt und deutlich 
länger braucht, als die abgelehnten Standardlösungen.

Warum willst Du unbedingt um Längen schlechteren Code benutzen, als den 
der Standard-Library des Compilers?


Ist Dir der Flash zu groß, nimm nen kleineren MC.
Ist er Dir zu schnell, schalte den CPU-Takt runter.


Peter

Autor: Yvonne J. (laserlight)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Peter,

danke für den Hinweis - hätte ich nicht gedacht. Ich habe nun doch die 
my_itoa geschichte genutzt und etwas getrixt.

Danke,
Yve

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.