アルファベットASCII値を取得するBashスクリプト

アルファベットASCII値を取得するBashスクリプト

アルファベットのASCII値を取得するには?

97たとえば、a

答え1

次の2つの関数を定義してください(他の言語でも利用可能)。

chr() {
  [ "$1" -lt 256 ] || return 1
  printf "\\$(printf '%03o' "$1")"
}

ord() {
  LC_CTYPE=C printf '%d' "'$1"
}

使用法:

chr 65
A

ord A
65

答え2

以下では、コレクション全体を見ることができます。

$ man ascii

8進数、16進数、10進数の表を取得できます。

答え3

これは非常にうまく機能します。

echo "A" | tr -d "\n" | od -An -t uC

echo "A"                              ### Emit a character.
         | tr -d "\n"                 ### Remove the "newline" character.
                      | od -An -t uC  ### Use od (octal dump) to print:
                                      ### -An  means Address none
                                      ### -t  select a type
                                      ###  u  type is unsigned decimal.
                                      ###  C  of size (one) char.

以下とまったく同じです。

echo -n "A" | od -An -tuC        ### Not all shells honor the '-n'.

答え4

私はシンプルでエレガントなBashソリューションが欲しいです。

for i in {a..z}; do echo $(printf "%s %d" "$i" "'$i"); done

スクリプトでは、次のものを使用できます。

CharValue="A"
AscValue=`printf "%d" "'$CharValue"

CharValueの前の一重引用符に注意してください。それは必須です...

関連情報