文字のASCII数値を取得します。

文字のASCII数値を取得します。

AZまたはazの範囲にASCII文字が必要で、その数値を返すシェルスクリプトを作成しようとしています。たとえば、出力は次のようになります。

scarlet$ Please type a character between A and Z or between a and z:
scarlet$ A       
scarlet$ The decimal value of A is: 65 

私の試み:

#!/bin/bash
echo Enter a letter:
read A
echo -n ${A} | od -i | head -1 | cut -b 10- | tr -d " "

答え1

POSIX:

$ printf %d\\n \'a
97

また、bash 4.0以降およびzshの非ASCII文字でも機能します。

$ printf %x\\n \'あ
3042

recode ..dump以下を使用して16進コードポイントを表示することもできます。

$ printf aあ|recode ..dump
UCS2   Mne   Description

0061   a     latin small letter a
3042   a5    hiragana letter a

答え2

POSIX:printf a | od -A n -t d1

真珠:perl -e 'print ord($ARGV[0])' a

Perlは、UTF-8ロケールの場合はUTF-8を処理します。perl -C255 -e 'print ord($ARGV[0])' œ

答え3

おそらく:

#!/bin/bash

echo -n "Enter a letter:"
read A
echo ${A}|od -t d1|awk '{printf "%s",$2}';echo

乾杯

答え4

od -t d1お持ちの方はぜひお試しください。他の出力形式が奇妙です。

以下のヘッドとカットも必要ありません。

printf "A" | od -t d1 | read addr num && echo $num

関連情報