[C++] Hex -> Dez

rook

Erfahrenes Mitglied
hallöchen :)

ich würd gern wissen ob es in Cpp eine funktion gibt, die einen hexdezimal string in einen dezimal integer umwandelt? :)
naja, ob es ein integer is oda ein string, is mir wurscht ^^

Code:
sprintf(temp, "%x", 255);

und schon haben wir 0xFF bzw "ff"... und wie kehre ich den vorgang um? :)

#edit:
bin auf ne andere idee gekommen...
ums mal kurz zu erläutern:
ich hab ein programm, das daten von einem webserver empfängt (plaintext)... das transfer encoding ist chunked, also kleistert er mir reihenweise chunks hin.. vor jedem chunk steht die länge als hexdezimal.. in dem string... jetzt möcht ich natürlich überprüfung, ob der chunk au wirklich so groß ist :)
bin ja aba noch garnicht auf die idee gekommen, meine prüfsumme in ein hex string umzuwandeln, und das dann z.b. mit memcmp() oder strcmp() zu überprüfen :>

würd mich aber trotzdem freuen, wenn jmd. einen anderen weg findet, bzw. es eine funktion gibt, die hex -> dez umwandelt. danke...
 
Zuletzt bearbeitet:
hat sich geklärt... aber ich meinte ja auch, ich hab den hex wert als string, und nicht als integer.... und atol() hilft da nich viel, da er "1086" nicht in 4230 umwandelt, sondern in 1086.... und mit "0x1086" oder gar anderen werten weiß er nichts mit anzufangen ;)
 
Code:
#include <math.h>

int Hex2Dec(const char *sz)
{
	char temp[255];

	for(int i = 0; i < (int)pow(16, (int)strlen(sz)); i++)
	{
		sprintf(temp, "%x", i);
		if(!strcmp(temp, sz))
			return i;
	}

	return -1;
}

besonders schnell ist das natürlich nicht, aber für meine verhältnisse ausreichend :D
denn ich hab nur 4 bytes zu überprüfen un das dauert nur ein paar ms ;)
würd mich trotzdem noch über schnellere methoden freuen *g*
so schwer kann das ja nich sein :D
 
Wie wär's mit:
Code:
int Hex2Dec(const char *sz)
{
    int iResult;
    sscanf(sz, "%x", &iResult);
    return iResult;
}
 
ehrlich, jez fühl ich mich verarscht :P
ich hab alles ausprobiert mit sscanf()... aber nix ging...
mit adress operator + ohne.... alles mögliche und nix ging.... un jez aufeinmal gehts.......
? hö?
bin mir sicher das ich nichts falsch gemacht hab :)
 
Zurück