Schreiben Sie Hex in C (byte)
Ich habe zum schreiben eines Bytes in hex in eine Datei, aber ich habe ein problem. Zum Beispiel.
Wenn ich:
unsigned char a = 0x0;
und ich schreiben in eine Datei mit fwrite:
FILE *fp = fopen("file.txt",wb);
fwrite(&a,sizeof(unsigned char),1,fp);
fclose(fp);
Wenn ich die Datei öffnen, die ich immer sehen, 20h, warum nicht 00h?
So, ich versuche es mal mit:
fprintf(fp,"%x",a);
In diesem Fall sehe ich 0h, aber ich brauche ein volles byte, nicht ein nibble.
Was soll ich tun?
- Sind Sie versuchen, zu schreiben, ein single-null-byte in der Datei, oder die ASCII-Zeichenfolge "00" oder "00"? Bitte klären Sie Ihre Absicht.
- Auch, welches tool Sie verwenden, um zu überprüfen, den Inhalt der Datei? Ein hex-editor?
- Ich möchte schreiben 00h.
- In diesem Fall
fprintf(fp, "%02xh", a);
ist, was Sie wollen (im Grunde @entspannen die Antwort, aber mit einemh
am Ende). - Ich überprüfen Sie mit Notepad++, aber ich download von einem hex-editor und öffnen Sie die Datei mit es und alles ist ok... was ist falsch?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Das erste Beispiel ist schwer zu glauben, es sollte zum generieren einer Datei mit einem byte mit dem Wert 0 in es. Das ist nicht wirklich eine text-Datei, obwohl, so dass ich denke, Ihre tools können täuschen.
Der zweite Versuch ist besser, vorausgesetzt, Sie möchten ein text-Datei mit einem text-Repräsentation der Wert in es. Zu machen, zwei hexadezimalen Ziffern, geben Sie eine Breite und Polsterung:
Bitte beachten Sie, dass es gibt keine solche Sache wie eine "hex-Wert". Ein Wert ist ein Wert; es kann vertreten als hex, aber das ist nicht Teil des Wertes. 100 dezimal ist das gleiche wie 64 in hex, und 1100100 in Binär. Die base ist nur von Bedeutung bei der Darstellung der Zahl als Zeichenkette der Ziffern, die Zahl selbst kann nicht "werden hex".