HEX nach ASCII konvertieren

oder so:
Code:
char *HexToDec(const char *quellstr, char *zstr)
{
	char mask = ~0xF; // = ~15 = 11110000
	int i, len = strlen(quellstr);
	long ergebnis = 0;

	for(i = 0; i < len; i++)
		ergebnis = ((ergebnis << 4) & mask) | HexToInt(quellstr[i]);

	sprintf(zstr, "%ld", ergebnis);

	return zstr;
}
(*) << 4: Ich weiß nicht ob beim left-shift mit nullen aufgefüllt wird
Weiß das zufällig jemand?
---
Ich weiß nicht ob diese Funktion schneller ist als deine, aber sie ist auf jeden fall kürzer :)
Code:
char HexToInt(char c)
{
	if(c >= '0' && c <= '9')
		return (c - '0');
	if(c >= 'a' && c <= 'f')
		return (c - 'a' + 10);
	if(c >= 'A' && c <= 'F')
		return (c - 'A' + 10);

	return 0;
}
 
Hexstring nach int kannst du auch mit sscanf erledigen :

Code:
#include <stdio.h>
#include <string.h>

int main(void)
{
	char hexzahl1[] = "FF";
	char hexzahl2[] = "54AB";
	char hexzahl3[] = "D4122EAB";

	unsigned int test;

	sscanf(hexzahl1, "%02X", &test);
	//verifiziere
	printf("hexzahl 1 in unsigned int = %lu\n\n", test);

	sscanf(hexzahl2, "%04X", &test);
	//verifiziere
	printf("hexzahl 2 in unsigned int = %lu\n\n", test);

	sscanf(hexzahl3, "%08X", &test);
	//verifiziere
	printf("hexzahl 3 in unsigned int = %lu\n\n", test);

	system("PAUSE");

	return 0;
}
 
Danke...

...für die zahlreichen Beispiele!

Da ich noch nicht lange mit C arbeite, sehe an vielen stellen vor lauter Bäumen den Wald nicht. (Pointer zeigen mir den Weg aus dem Wald - hahaha!)

- Sotares, der im Wald Beeren pflückt.
 
Re: Danke...

Original geschrieben von Sotares
...für die zahlreichen Beispiele!

Da ich noch nicht lange mit C arbeite, sehe an vielen stellen vor lauter Bäumen den Wald nicht. (Pointer zeigen mir den Weg aus dem Wald - hahaha!)

Nicht aus - nur rein.
 
Zurück