Convert Between ASCII Code and Character in Commandline

CSDN论坛上看到是否可以用shell命令实现ASCII code和对应字符的转换。可以完成这方面的应该相当多吧?

首先想到的是shell的内建命令printf,这个printf和C语言当中的标准输出函数printf()非常类似。另外,实现的

方法确实是很多,下面一一来看。

1.From ASCII code to Character

$ echo "A" | tr -d "\n" | od -An -t dC | awk '{print $1}'

65

# 再看看小写字母的处理

$ echo "a" | tr -d "\n" | od -An -t dC | awk '{print $1}'

97

# 使用printf会非常简单

$ printf"%d\n""'A"

65

$ printf"%d\n""'a"

97

# 也可以使用hexdump

$ echo -n A |hexdump -d |awk '{print $2}'
00065

$ echo -n a |hexdump -d |awk '{print $2}'
00097

2.From Character to ASCII code

$ awk-v char=65'BEGIN { printf "%c\n", char; exit }'
A
$ awk-v char=97'BEGIN { printf "%c\n", char; exit }'
a
# 下面这个复杂一点的,用bc转换成十六进制,obase实现进制转换
$ echo-e `echo"obase=16;65"|bc|sed's/^\(.*\)$/\\\\x&/'`
A
# 八进制,然后用echo -e进行解析
$ echo-e `echo"obase=8;97"|bc|sed's/^\(.*\)$/\\\\0&/'`
a
# 直接用printf也可以的
$ printf"`echo"obase=8;97" |bc |sed 's/^\(.*\)$/\\\&/'`\n "
a
$ printf "`echo "obase=8;65" | bc |sed 's/^\(.*\)$/\\\&/'`\n"
A

总结:

方法很多,Linux下的shell命令提供的功能确实是非常强大,只有想得到,没有做不到。

参考:

[1].print ascii value of A

[2].How to get ascii value using shell commands/script

[3].How to get ascii value (decimal ) of chars in linux?

你可能感兴趣的:(c,linux,shell,语言,character)