ASCII文字をASCII16進表現に変換する

ASCII文字をASCII16進表現に変換する

AWK スクリプトで ASCII 文字を ASCII HEX に変換するにはどうすればよいですか?

文字の範囲でループしたい

for(i="a"; i<"g"; i++)
 print i;

注: 16 進表現の範囲でループし、文字を印刷します。

答え1

私には、本当に必要ないように思えます全てキャラクター...

$ awk 'BEGIN { chartable="abcdefghij" ; for (i=index(chartable, "a"); i<index(chartable, "g"); i++) { print substr(chartable, i, 1) } }'
a
b
c
d
e
f

答え2

すべての ASCII 文字を含むテーブルを作成し、awk 組み込みを使用してindex()テーブル内の文字を検索します。次に、 を使用してsprintf()、返された 10 進数値をindex()16 進数値に変換します。

BEGIN {
    for (i = 0; i < 128; i++) {
       table = sprintf("%s%c", table, i);
    }
}

function chartohex (char) {
    return sprintf("0x%x", index(table, char));
}

END { # examples
   print chartohex("a");
   print chartohex("A");
   print chartohex("!");
}

このコードをファイル「foo」に入れて実行するawk -f foo < /dev/nullと、「a」、「A」、「!」の ASCII 値が 16 進数で表示されます。

答え3

awk には、Python のような ord()、chr() 関数はありません。まず、インデックスが ASCII 文字で値が 10 進数である配列を BEGIN ブロック内に作成する必要があります。

awk 'BEGIN {
 for (i = 0; i <= 255; i++) {
    t = sprintf("%c", i)
    a[t] = i
}

for( i=a["a"]; i < a["g"]; i++)
    print sprintf("%c",i)
}'
a
b
c
d
e
f

関連情報