GNU/Linux >> Znalost Linux >  >> Linux

Jak převést data souboru na obyčejný hex?

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

Pokud vás unavuje psát toto pokaždé vytvořte alias.


Jak snadno převést do/z obyčejných strojově čitelných hexadecimálních dat

Stručně.

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

Vysvětlení:

$ xxd -plain test.txt > test.hex

Tím se zapíše hexadecimální kódování dat v test.txt do nového souboru test.hex.The -p nebo -plain volba umožňuje xxd používat "prostý" hexadecimální formát bez mezer mezi dvojicemi hexadecimálních číslic (tj. bez mezer mezi hodnotami bajtů). Tím se "abc ABC" převede na "61626320414243". Bez -p převedl by text do 16bitového, slovně orientovaného tradičního hexdump formátu, který je pravděpodobně snáze čitelný, ale méně kompaktní, a proto méně vhodný jako přenosový formát a poněkud obtížnější zpětný chod.

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

Toto používá -r nebo -revert možnost zpětného chodu. -plain volba se znovu používá k označení, že vstupní hex soubor je v prostém formátu.

Výstupní název souboru se liší od původního souboru, abychom mohli později porovnat výsledky s původním souborem.

$ diff test.txt test2.txt
$ 

Příkaz diff nevypíše nic – to znamená, že mezi původním a rekonstruovaným obsahem souboru není žádný rozdíl.

Už mě nebaví kopat do některých řetězců speciálního formátu

Použijte alias nebo deklarujte funkce ve svém profilu .profile k vytvoření mnemotechnických pomůcek, abyste si nemuseli pamatovat nebo hloubat v manuálových stránkách.

nebo si jen zapamatujte -plain a -revert .

Zabalený výstup

Ano, ve výstupu jsou znaky nového řádku. Tomu se chcete vyhnout. Můžete použít -c nebo -cols možnost určit, jak dlouhé mají být výstupní řádky, aby se zabránilo zalamování výstupu. -c 0 dává výchozí délku a manuálová stránka naznačuje, že limit je 256, ale zdá se, že to funguje i mimo něj.

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

wc wordcount nám říká, kolik řádků, slov a znaků je v každém souboru.

Takže 121 řádků (880 slov, 4603 bajtů) textu ASCII bylo zakódováno jako 1 řádek hexadecimálních číslic.


Zde je verze používající od nástroj (část coreutils balíček):

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

Linux
  1. Jak převést zvukový soubor na Opus?

  2. Jak převést ISO8859-15 na UTF8?

  3. Jak rm funguje? Co dělá rm?

  1. Jak převést soubory do kódování UTF-8 v Linuxu

  2. Jak převedu tar.bz2 na tar.gz?

  3. Jak převést soubor TAR na soubor ISO

  1. Jak převést PPK na soubor PEM pomocí příkazu

  2. Jak obnovit data Xfs po Rm?

  3. Jak převést systémy souborů Ext na Btrfs