用于获取字母表 ASCII 值的 Bash 脚本

用于获取字母表 ASCII 值的 Bash 脚本

如何获取字母表的 ASCII 值?

例如,97对于a

答案1

定义这两个函数(通常在其他语言中可用):

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

您将获得八进制、十六进制和十进制的表格。

答案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 之前的单引号。这是有义务的...

相关内容