GNU/Linux >> Linux の 問題 >  >> Linux

ファイルデータをプレーンな 16 進数に変換するには?

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

これを書くのに飽きたら 毎回、エイリアスを作成してください。


<ブロック引用>

プレーンな機械可読 16 進数データとの間で簡単に変換する方法

簡単に言えば。

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

説明:

$ xxd -plain test.txt > test.hex

これにより、test.txt 内のデータの 16 進エンコードが新しいファイル test.hex に書き込まれます。-p または -plain オプションを指定すると、xxd は 16 進数のペアの間にスペースを入れない (つまり、バイト値の間にスペースを入れない) 「プレーンな」16 進数形式を使用します。これは、「abc ABC」を「61626320414243」に変換します。 -p なし テキストを 16 ビット ワード指向の従来の 16 進ダンプ形式に変換します。これは間違いなく読みやすいですが、コンパクトではないため、送信形式としてはあまり適しておらず、元に戻すのが少し難しくなります。

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

これは -r を使用します または -revert 逆操作のオプション。-plain オプションは、入力 hex ファイルがプレーン フォーマットであることを示すために再び使用されます。

後で結果を元のファイルと比較できるように、出力ファイル名を元のファイル名とは異なるものにします。

$ diff test.txt test2.txt
$ 

diff コマンドは何も出力しません。これは、元のファイルの内容と再構成されたファイルの内容に違いがないことを意味します。

<ブロック引用>

特殊なフォーマット文字列を掘り下げるのはもううんざりです

エイリアスを使用するか、.profile で関数を宣言してニーモニックを作成し、man ページを覚えたり掘り下げたりする必要がないようにします。

または -plain を覚えておいてください そして -revert .

<ブロック引用>

ラップされた出力

はい、出力に改行文字があります。あなたはそれを避けたい.あなたは -c を使うことができます または -cols 出力の改行を避けるために、出力行の長さを指定するオプション。 -c 0 デフォルトの長さを示し、man ページでは 256 が限界であると示唆されていますが、それを超えても機能するようです。

$ 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 コマンドは、各ファイルの行数、単語数、および文字数を教えてくれます。

したがって、121 行 (880 ワード、4603 バイト) の ASCII テキストが 1 行の 16 進数としてエンコードされました。


これは od を使用したバージョンです ユーティリティ (coreutils の一部) パッケージ):

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

Linux
  1. コマンドを使用してPPKをPEMファイルに変換する方法

  2. サウンドファイルをOpusに変換する方法は?

  3. シンボリックリンクを通常のファイルに変換するには?

  1. .img ファイルを vhd に変換するにはどうすればよいですか?

  2. Linux でファイルのデータ ブロックを一覧表示するにはどうすればよいですか?

  3. TAR ファイルを ISO ファイルに変換する方法

  1. LinuxでファイルをUTF-8エンコーディングに変換する方法

  2. Rm後にXfsデータを回復する方法は?

  3. Ext ファイル システムを Btrfs に変換する方法