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

Linux シェルで 16 進数を ASCII 文字に変換する方法は?

echo -n 5a | perl -pe 's/([0-9a-f]{2})/chr hex $1/gie'

これは非 16 進文字をスキップしないことに注意してください。 16 進数だけが必要な場合 (元の文字列の空白などは必要ありません):

echo 5a | perl -ne 's/([0-9a-f]{2})/print chr hex $1/gie'

また、zshbash echo でこれをネイティブにサポート :

echo -e '\x5a'

echo でこれを行うことができます のみ、他のものなし。 「-n」を追加することを忘れないでください。そうしないと、自動的に改行が行われます:

echo -n -e "\x5a"

以前は xxd でこれを行っていました:

echo -n 5a | xxd -r -p

しかし、Debian/Ubuntu では、xxd は vim-common の一部であるため、最小システムには存在しない可能性があることに気付きました。 Perl も避けるために (最小システムの一部でもありません)、sed、xargs、および printf を次のように使用することになりました。

echo -n 5a | sed 's/\([0-9A-F]\{2\}\)/\\\\\\x\1/gI' | xargs printf

ほとんどの場合、変換したいのは数バイトだけで、そのようなタスクには問題ありません。 Ghostdog74 のソリューションに対するこのソリューションの利点は、任意の長さの 16 進文字列を自動的に変換できることです。 printf は標準入力から読み取らないため、xargs が使用されます。


Linux
  1. シェルで制御文字(^ c、^ d、^ [、…)を異なる方法で表示する方法は?

  2. BASH シェルが Linux で構成ファイルをロードする方法

  3. Linux のシェル出力を HTML に変換するには?

  1. Linuxの基本:Wgetを使用してシェルにファイルをダウンロードする方法

  2. Linuxでシェルを変更する方法

  3. Linuxシェルスクリプトに新しい行を挿入するには?

  1. Linux でデフォルトのシェルを変更する方法

  2. Linux でデフォルトのシェルを変更する方法

  3. Bash変数の文字数をカウントするにはどうすればよいですか