Forum: Compiler & IDEs Hex -> Decimal ausgeben


von Nico M. (hannover)


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

von Karl H. (kbuchegg)


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)

von Karl H. (kbuchegg)


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.

von Nico M. (hannover)


Lesenswert?

Die Zahl liegt als 16-Bit Hex vor (u16).


MfG
Nico

von Peter D. (peda)


Lesenswert?

Da war doch mal was in der Codesammlung:

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


Peter

von Peter (Gast)


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

von Micha (Gast)


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

von Nico M. (hannover)


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

von Jan M. (mueschel)


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.

von Peter (Gast)


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

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
Noch kein Account? Hier anmelden.