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


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
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

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]
  • [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.