11

可能重复:
使用 printf 将整数 ASCII 值转换为 BASH 中的字符

我想将我的整数转换为 ASCII 字符

我们可以像这样在java中转换:

int i = 97;          //97 is "a" in ASCII
char c = (char) i;   //c is now "a"

但是,有没有办法做这个shell脚本?

4

2 回答 2

24
#!/bin/bash
# chr() - converts decimal value to its ASCII character representation
# ord() - converts ASCII character to its decimal value

chr() {
  printf \\$(printf '%03o' $1)
}

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

ord A
echo
chr 65
echo

编辑:

如您所见ord(),这有点棘手——在整数前面放一个单引号。

单 Unix 规范:“如果前导字符是单引号或双引号,则该值应是单引号或双引号后面字符的基础代码集中的数值。”

(取自http://mywiki.wooledge.org/BashFAQ/071)。

参见man printf(1p)

于 2012-10-12T09:12:05.553 回答
6
declare -i i=97
c=$(printf \\$(printf '%03o' $i))
echo "char:" $c
于 2012-10-12T09:11:18.083 回答