我想将整数转换为ASCII字符
我们可以像这样转换java:
int i = 97; //97 is "a" in ASCII
char c = (char) i; //c is now "a"
但是,有没有办法做这个shell脚本?
答案 0 :(得分:15)
#!/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()有点棘手 - 在整数前加一个引号。
Single Unix Specification:“如果主角是a 单引号或双引号,该值应为数值 单引号后面的字符的底层代码集 双引号“。 见printf()
答案 1 :(得分:6)
declare -i i=97
c=$(printf \\$(printf '%03o' $i))
echo "char:" $c