Forum: Compiler & IDEs string in hex umwandeln


von hex (Gast)


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.

von hex (Gast)


Lesenswert?

Ich hab jetzt kurzer Hand eine  eigene Funktion geschrieben:
1
uint8_t str2int(char dat){
2
  dat -= '0';
3
  if (dat>9) dat-= 7;
4
  return dat;
5
}

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


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

von Karl H. (kbuchegg)


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.

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.