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.
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???
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.