# Wie wandel ich einen Binary-String in einen Hex-String ?



## ObScUrItAs (5. Mai 2005)

Ich habe einen String , in dem binäre Werte stehen. Wie kann ich diese binäre Werte in hexadezimale Werte wandeln ?


----------



## Matthias Reitinger (5. Mai 2005)

Einfach über jedes einzelne Zeichen des Strings iterieren und mittels sprintf und strcat einen String mit Hexadezimalwerten erstellen.


----------



## ObScUrItAs (5. Mai 2005)

ok , thx

ich habe es probiert, aber es funktioniert nicht so ganz.


```
char szString2[300];
char szString[300];


strcat(szString2,szString);

dp = fopen("bin.txt" , "wb");
fputs(szString2,dp);
fclose(dp);

sprintf(szString2,"%x",szString);

dp = fopen("hex.txt" , "w");
fputs(szString2,dp);
fclose(dp);
```

Der Binärwert in szString ist :              ä¤p¥‚ÄÏõÀ5D+]
Der Binärwert in der Datei bin.txt ist :   ä¤p¥‚ÄÏõÀ5D+]
Der Hexa-Wert sollte sein :  15e4a470a5la82c4cff5c00435442b5d
Der Wert in der Datei hex.txt ist : 12fe54 

Warum ?

Alternativ habe ich noch das hier ausprobiert :


```
dp = fopen("hex.txt" , "w");
fprintf(dp,"%x",szString);
fclose(dp);
```

Der Wert von szString ist der selbe wie oben. In der Datei hex.txt steht wieder : 12fe54


----------



## Gawayn (5. Mai 2005)

Wenn dein String nur Einsen und Nullen enthält, kannst du auch sehr einfach selbst eine Konvertierungsroutine schreiben, weil sich ja im Binärsystem ein Block von 4 Ziffern 1:1 in eine Hexziffer übersetzen lässt.

-Gawayn


----------



## Matthias Reitinger (5. Mai 2005)

Ich hab ja auch gesagt, du sollst über jedes einzelne Zeichen des Strings iterieren! Wenn du es direkt von einer Datei in die andere übertragen willst, dann versuch es mal so in der Art:


```
#include <stdio.h>

int main()
{
	int c;

	FILE *fpIn = fopen("bin.txt", "rb");
	FILE *fpOut = fopen("hex.txt", "w");
	
	while ((c = fgetc(fpIn)) != EOF) {
		fprintf(fpOut, "%x", c);
	}

	fclose(fpOut);
	fclose(fpIn);	

	return 0;
}
```


----------

