如何获取字母表的 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 之前的单引号。这是有义务的...