mikrocontroller.net

Forum: Compiler & IDEs Hex -> Decimal ausgeben


Autor: Nico M. (hannover)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,
also wenn ich jetzt sage ich möchte eine HEX in DEC umwandeln werd ich
hier bestimmt von einigen geohrfeigt, weil es gibts ja eigendlich nur 0
& 1. Aber ich möchte ja auch nich umwandeln. Ich benötige nur eine
Decimale darstellung einer HEX- Zahl. Nur irgendwie hab ich keinen Plan
wie. Ich hoffe ihr könnt mir da helfen. Über die Suche hab ich auch
nichts passendes gefunden. Also ne HEX in DEC dazustellen ist ja auf
dem Papier kein Problem. Aber im AVR schon.


Gruß & Danke
Nico

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
In welcher Form liegt den deine Hex-Zahl vor?

Hex und Dezimal sind nur verschiedene Repräsentierungen
von ein und demselben: einer Zahl.

Das heist wenn du deine Zahl im Rechner auch als Zahl hast,
dann sind Hex und Dezimal (oder Binär) nur verschiedene
Darstellungsweisen, wie man eine Zahl ausgebene kann.

Daher die Frage: Wie liegt denn die Zahl vor?
(Ich vermute mal in Form eines Strings, will aber sicher
gehen)

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Also ne HEX in DEC dazustellen ist ja auf
> dem Papier kein Problem.

Na ja. Wenn's auf dem Papier kein Problem ist, wo liegt
dann dein Problem. Normalerweise ist genau das das
Schwierigste: Ein Verfahren zu finden. Wenn du das Verfahren
hast und es am Papier funktioniert ist der Rest reines
Handwerk.

Autor: Nico M. (hannover)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Zahl liegt als 16-Bit Hex vor (u16).


MfG
Nico

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Da war doch mal was in der Codesammlung:

http://www.mikrocontroller.net/forum/read-4-46127.html#new


Peter

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hmmmm..

Vermutlich möchtest Du einen numerischen Wert (z.B. ein Byte oder einen
Integer) in einen String konvertieren, der eine Dezimal-Zahl darstellt?


z.B.

char MyDezStr[8] = "";
int  MyHexVal    = 0x1234;    // = 11064 Dezimal
Int2Dez(MyHexVal,MyDezStr);   // => MyDezStr = "11064"

Tja, Du schaffst es bestimmt eine solch Funktion Int2Dez()auf die Beine
zu stellen! Ist eine gute Übung umd C zu lernen...

MfG  Peter

Autor: Micha (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du kannst z.B. printf("%d", zahl) oder sprintf(string, "%d", zahl)
nutzen; dann hast Du eine ASCII-Repräsentation der Zahl.

Was möchtest Du überhaupt machen? Hast Du ein Display?

Michael

Autor: Nico M. (hannover)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,
also ein Diplay habe ich zur Zeit noch nicht. Ich gebe die Daten über
RS232 aus. Und habe da ein kleines Tool geschrieben das die Daten
entgegen nimmt. Das kleine 'Toolchen' beinhaltet auch noch ein VT100
Terminal und bequemer mit dem uC komunizieren zu können bzw. diverse
Einstellungen zu machen. Ich denke aber ich werde in der nächsten Woche
ncoh ein Display dran basteln. Dieses von Pollin für knappe 8€. Ne
"Adapterplatine" von Folienstecker auf auf DIL 10Pol. Flachbandkabel
habe ich schon fertig, muss nur noch geätzt werden.

MfG
Nico

Autor: Jan M. (mueschel)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dann gibts drei Möglichkeiten:
a) Du benutzt eh schon printf oder sprintf: Diese Funktionen erledigen
dir die nötige Umwandlung vor der Ausgabe
b) Du hast Platz auf dem µC: Verwende itoa();
c) Du hast kaum Platz und willst einen verständlichen Codebaustein
haben: Den findest du unter dem Link von Peter

Ausgabe auf UART und Ausgabe auf dem Display unterscheiden sich bei
ordentlicher Programmierung nur sehr unwesentlich, du brauchst nur
andere Ausgaberoutinen. Ergo kannst du den Code für beides verwenden.

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also falls Du sprintf() nicht ohnehin schon verwendest würde ich itoa()
benutzen. Diese Funktion braucht vermutlich deutlich weniger Resourcen
als sprintf()!

Gruss Peter

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.