hi,
wie mache ich aus einem char: 'F' eine hex zahl F (15) ?
außer das ich zuerst gucken muss ob das char zwischen 0-9 bzw A-F liegt
und dann noch die '0' bzw die '7' abziehen muss?
hi,
wie mache ich aus einem char: 'F' eine hex zahl F (15) ?
außer das ich zuerst gucken muss ob das char zwischen 0-9 bzw A-F liegt
und dann noch die '0' bzw die '7' abziehen muss?
In welcher Sprache soll das denn sein?
Einmal schwarzen Tee mit Milch und Zucker bitte!
Fuer C
Eigentlich brauchst du das gar nicht Umwandel da c char zeichen sowiiso nur als int werte speichert
bei ausgabe eines zeichens als char wert wuerde das heisen:
Auserdem meine ich doch das laut asci tab. F als HEX46 istCode:#include <stdio.h> void main(void) { char x='F'; printf("\n%x",x); printf("\n%i",x); printf("\n%c",x); }
@sven1978:
du hast da was missverstanden, gewünscht war eine möglichst
kurze funktion die hex/dec konvertierung durchführt.( deswegen f=15)
@Jaipur:
ich würde schon sagen dass der weg den du beschrieben hast der
kürzeste ist (wobei man das sicherlich etwas optimieren könnte)
Na denn, hier ist eine Funktion die das können sollte was Du verlangst. Funktioniert nur mit Grossbuchstaben, müsste man also gegebenenfalls noch ein wenig verfeinern.
Sowas ähnliches gabs gestern schon mal im PHP-Bereich, nur eben mit Binärzahlen. Das Prinzip ist aber das Gleiche.Code:int HexToDez(char* Hex) { int c, i, k; c=0; i=0; do{ k=Hex[strlen(Hex)-i-1]; if(k>47 && k<58) k=k-48; else if (k>64 && k<71) k=k-55; c+=k*(int)pow(16, i); i++; }while(i<(int)strlen(Hex)); return c; }
"There are two major products
that come out of Berkeley: LSD
and UNIX. We don't believe this
to be a coincidence." - Jeremy S.
Anderson
hier nochmal das gleiche, aber etwas kürzer:
Code:int HexToDez(const char* Hex) { int result = 0; char c; while ((c=*(Hex++))!=0) { (c-='0')>9?c-=7:0; result=c+(result<<4); } return result; }
Jau, danke, C wie wir es lieben, kurz und unlesbar.Original geschrieben von arthur
hier nochmal das gleiche, aber etwas kürzer:
"There are two major products
that come out of Berkeley: LSD
and UNIX. We don't believe this
to be a coincidence." - Jeremy S.
Anderson
es geht sicher noch kürzer, hab nur keine zeit damit weiter zu spielen
Lesezeichen