UNIXシェルスクリプトでASCIIコードを16進数に変換する

UNIXシェルスクリプトでASCIIコードを16進数に変換する

Unixシェルで(コマンドなしで)ASCIIコード(たとえば、または-など_)を16進表現に変換したい(例:=>)。.bc-%2d

どんなアイデアがありますか?

ベストアンサー1

printfC関数をシミュレートするツールは通常存在します/usr/bin/printfが、多くのシェルでもそれに対する組み込み機能を実装しています。これを使用して%02x文字の16進表現を取得できますが、渡す文字列に一重引用符(編集する:最初に一重引用符を追加するだけで十分であることがわかりました。):

printf "%%%02x\n" "'-"   # Outputs %2d

便宜上、次のようにシェル関数を作成できます。

function hex() {
    printf "%%%02x\n" "'$1"
}

hex -   # Outputs %2d
hex _   # Outputs %5f
hex .   # Outputs %2e

おすすめ記事