Archiv verlassen und diese Seite im Standarddesign anzeigen : aus char hex machen?
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?
sven1978
18-02-2003, 17:26
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:
#include <stdio.h>
void main(void) {
char x='F';
printf("\n%x",x);
printf("\n%i",x);
printf("\n%c",x);
}
Auserdem meine ich doch das laut asci tab. F als HEX46 ist
@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.
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;
}
Sowas ähnliches gabs gestern schon mal im PHP-Bereich, nur eben mit Binärzahlen. Das Prinzip ist aber das Gleiche.
hier nochmal das gleiche, aber etwas kürzer:
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;
}
Original geschrieben von arthur
hier nochmal das gleiche, aber etwas kürzer:
Jau, danke, C wie wir es lieben, kurz und unlesbar. :)
es geht sicher noch kürzer, hab nur keine zeit damit weiter zu spielen :)
Powered by vBulletin® Version 4.2.5 Copyright ©2025 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.