Forum: Mikrocontroller und Digitale Elektronik Suche Umwandlung int --> hex


von Stopfer (Gast)


Lesenswert?

Hallo!

Ich programmiere mit CodeVisionAVR. leider beinhaltet die Software nur
die Umwandelfunktion int to ascii. Gibt es im Forum jemand der eine
Funktion geschriebn hat, wo man die int Zahl zu einer hex Zahl wandeln
kann?

von MooseC (Gast)


Lesenswert?

itoa ist aber schon ganz richtig. Nimm Radix 16 und dann passt das
schon

char *   itoa (int __val, char *__s, int __radix)

von Stopfer (Gast)


Lesenswert?

Hi!

Kannst du mir ein Beispiel geben?

von Mike (Gast)


Lesenswert?

int dings = 15;
char array [5];

itoa (dings,array,16);

von Stopfer (Gast)


Lesenswert?

Hi Mike!

Mit CodeVsionAVR funktioniert dies nicht.
------------------------
int dings = 15;
char array [5];

itoa (dings,array,16);
------------------------

von Rufus T. Firefly (Gast)


Lesenswert?

"Mit CodeVsionAVR funktioniert dies nicht."

Die obligatorische Frage:

Was heisst "funktioniert nicht"? Wird nichts in das Array
geschrieben, weigert sich der Compiler, den Code zu übersetzen,
explodiert der Controller?

von Tobi (Gast)


Lesenswert?

evtl will er einen expliziten cast haben
itoa (dings,(char*)array,16);

von Matthias (Gast)


Lesenswert?

Hi

wenn array als "char array [5];" deklariert ist dann ist "array"
ein "char *"

Matthias

von Tobi (Gast)


Lesenswert?

ich weiss, aber vc++ meckert es trotzdem an und gcc falss ich mich recht
erinnere auch

von peter dannegger (Gast)


Lesenswert?

"...explodiert der Controller?"

Das wirds wohl sein.
Meine Glaskugel ist ja auch grad zur Reparatur.


Peter

von Ingo B. (Gast)


Lesenswert?

Hi,

in CodeVision ist itoa nur:
void itoa(int n, char *str)

Also nichts mit radix.

Wenn Du keine eigene Umwandlungsfunktion schreiben willst, geht es
höchstens mit sprintf...

Gruss,
Ingo.

von Tobi (Gast)


Lesenswert?

char *res; (in dem fall mindestens 2 zeichen platz benötigt)
char number;

static char ch_hex[] =
{'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};

res[1] = ch_hex[ number & 0x0F ];
res[0] = ch_hex[ (number >> 4) &0x0F   ] ;

von Stopfer (Gast)


Lesenswert?

Hallo Tobi!

jetzt bin völlig verwirrt.
Wie kann ich deine Code in ein beispiel umsetzen?

von Tobi (Gast)


Lesenswert?

mach res als
char res[3];

und am ende noch ein
res[2] = 0;

funktionier mit zahlen bis 255, in res stehts dann drin

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.