binär in hex umwandel
-
hallo
habe eine frage:
wie kann ich in einem string sich befindende binäre zeichen in hex zeichen umwandeln?
-
Du kannst z.B. den string mittels printf und dem format specifier %x in hex ausgeben lassen.
-
funktioniert irgendwie nicht
#include <stdio.h>
#define BUF 100
void main()
{
FILE *pfile;
char dateiname[62];
char line[BUF];printf ("Bitte geben Sie den Dateipfad der zu Oeffnenden Datei ein:\n");
scanf ("%61s", dateiname);pfile = fopen (dateiname, "rb");
if (!pfile)
{
printf("\nFEHLER: Die angegebene Datei kann nicht gefunden werden!\n");
system("PAUSE");
return;
}
else printf("\nDie Datei wurde erfolgreich geoeffnet!\n");while(fread(line,BUF,1,pfile)!=0)
{
printf("%x", line);
}system("PAUSE");
}im dos fenster erscheint immer nur derselbe wert: 22fe8022fe8022fe80...
egal was ich für eine datei oeffne.
-
So kann das nicht funktionieren. Mit dem %x Platzhalter kannst du integer in Hexadezimaler Schreibweise anzeigen. So könntest du das machen:
char str[BUF]; //... // In str steht jetzt etwas wie 10100110010\0.... int Pos = 0; int Ergebnis = 0; int temp = 1; while(str[Pos]=='1'||str[Pos]=='0')Pos++; // Nullterminierungszeichen suchen for(int i=1;i<=Pos;i++) { if(str[Pos-i]=='1')Ergebnis+=temp; temp*=2; } //Ergebins ist die Zahl im Dezimalsystem printf("Hex: %X",Ergebnis); // Hexadezimal ausgeben
Hoffe, ich konnte dir damit weiterhelfen.
MfG, Jochen
-
Wenn man auf seine Frage keine zufriedenstellende Antwort bekommt, einfach mal unter leicht geändertem Namen und leicht geändertem Titel die leicht veränderte Frage nochmal stellen, vielleicht findet sich dann einer
char c; while( 1==fread(&c,1,1,pfile) ) printf("%02X", (int)c);
sollte wohl das umsetzen, was du meinst.
-
Oh, da hab ich es mir ja unnötig kompliziert gemacht