GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie konvertiere ich Dateidaten in einfaches Hex?

hexdump -ve '1/1 "%02x"'
xxd -p | tr -d '\n'

Wenn Sie es leid sind, dies zu schreiben Erstellen Sie jedes Mal einen Alias.


So konvertieren Sie ganz einfach in/aus maschinenlesbaren Hexadezimaldaten

In Kürze.

$ xxd -plain test.txt > test.hex
$ xxd -plain -revert test.hex test2.txt
$ diff test.txt test2.txt
$

Erklärung:

$ xxd -plain test.txt > test.hex

Dies schreibt eine Hex-Kodierung der Daten in test.txt in die neue Datei test.hex.The -p oder -plain Option bewirkt, dass xxd ein "einfaches" Hex-Format ohne Leerzeichen zwischen Paaren von Hex-Ziffern verwendet (d. h. keine Leerzeichen zwischen Byte-Werten). Dadurch wird „abc ABC“ in „61626320414243“ umgewandelt. Ohne -p es würde den Text in ein wortorientiertes traditionelles 16-Bit-Hexdump-Format konvertieren, das wohl einfacher zu lesen, aber weniger kompakt und daher als Übertragungsformat weniger geeignet und etwas schwieriger umzukehren ist.

$ xxd -plain -revert text.hex test2.txt

Dies verwendet den -r oder -revert Option für umgekehrten Betrieb. Die -plain Die Option wird erneut verwendet, um anzuzeigen, dass die Eingabe-Hex-Datei im einfachen Format vorliegt.

Ich ändere den Ausgabedateinamen vom Originaldateinamen, damit wir später die Ergebnisse mit der Originaldatei vergleichen können.

$ diff test.txt test2.txt
$ 

Der diff-Befehl gibt nichts aus - das bedeutet, dass es keinen Unterschied zwischen dem ursprünglichen und dem rekonstituierten Dateiinhalt gibt.

Ich bin es leid, nach einigen speziellen Formatzeichenketten zu graben

Verwenden Sie Alias- oder Deklarationsfunktionen in Ihrer .profile-Datei, um Mnemoniken zu erstellen, damit Sie sich nicht erinnern oder in Manpages herumwühlen müssen.

oder merken Sie sich einfach -plain und -revert .

Umbrochene Ausgabe

Ja, die Ausgabe enthält Zeilenumbrüche. Das möchten Sie vermeiden. Sie können den -c verwenden oder -cols Option, um anzugeben, wie lang die Ausgabezeilen sein sollen, um zu versuchen, einen Zeilenumbruch der Ausgabe zu vermeiden. -c 0 gibt die Standardlänge an und die Manpage schlägt vor, dass 256 das Limit ist, aber es scheint darüber hinaus zu funktionieren.

$ xxd -plain -cols 9999 test.txt > test.hex
$ wc test.txt test.hex
  121   880  4603 test.txt
    1     1  9207 test.hex

Die wc Der Befehl wordcount sagt uns, wie viele Zeilen, Wörter und Zeichen in jeder Datei enthalten sind.

So wurden 121 Zeilen (880 Wörter, 4603 Bytes) ASCII-Text als 1 Zeile mit Hexadezimalziffern kodiert.


Hier ist die Version mit od Dienstprogramm (Teil von coreutils Paket):

od -An < input | tr -dc '[:alnum:]'

Linux
  1. So konvertieren Sie eine PPK-Datei in eine PEM-Datei mit Command

  2. Wie konvertiere ich eine Sounddatei in Opus?

  3. Wie konvertiere ich tar.bz2 in tar.gz?

  4. Wie liste ich die Datenblöcke einer Datei unter Linux auf?

  5. So konvertieren Sie eine TAR-Datei in eine ISO-Datei

So verwenden Sie Ansible Vault zum Sichern sensibler Daten

So verwenden Sie Bash-Dateitestoperatoren in Linux

So schreiben Sie Daten in eine Datei unter Linux

So konvertieren Sie Raw-Kamerabilder in JPEG in Linux

So konvertieren Sie eine Windows-Datei in eine UNIX-Datei

So löschen Sie eine AWStats-Datendatei