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

ok , thx

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

Code:
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 :

Code:
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
 
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
 
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:

Code:
#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;
}
 
Zurück