string in hex umwandeln

Gast #1602747
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.
Gast #1602755
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???
#1602762
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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren