www.mikrocontroller.net

Forum: Compiler & IDEs string in hex umwandeln


Autor: hex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,
Ich bekomme als String Hexwerte geliefert, z. B. "E8".
Diese benötige ich nun wieder als hex.
Ich habs schon mit "sprintf(tmp,"%02x",atoi(hex_tmp));" probiert, leider 
ohne Erfolg.

In hex_tmp steht beispielhaft "E8\0" und in tmp (unsigned char) soll nun 
eben E8 (1110 1000) rein.

Kann mir bitte jemand auf die Sprünge helfen. Die Suchfunktion hat erst 
einmal nicht ergeben.

Autor: hex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich hab jetzt kurzer Hand eine  eigene Funktion geschrieben:
uint8_t str2int(char dat){
  dat -= '0';
  if (dat>9) dat-= 7;
  return dat;
}

Mit dem Aufruf bekomm ich dann das was ich will ;)
tmp=str2int(hex_tmp[0])*16+str2int(hex_tmp[1]);


Würde mich trotzdem interessieren ob es auch mit sprintf geht???

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

Bewertung
0 lesenswert
nicht lesenswert
hex schrieb:

> Würde mich trotzdem interessieren ob es auch mit sprintf geht???

Nein.
Du hast zu allererst einfach nur einen String mit dem du etwas machen 
willst. Also ist sprintf schon mal falsch. sprintf erzeugt einen String. 
atoi geht auch nicht, denn atoi geht von einer Dezimaldarstellung aus.
Wenn schon, dann ist sscanf dein Freund: Einen String zerlegen und die 
Einzelteile daraus in anderen Formaten herausholen. Auch alle strtoxxx 
Funktionen sind hier nützlich.

Aber für deinen Fall ist das wohl Overkill, da eine derartige 
Umwandlungsfunktion, wie du gesehen hast, in wenigen Zeilen gemacht ist.

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.