Linux伊甸园论坛 » Shell编程 » 不知道现有的builtin的工具如何把 char 转成 int
clark
版主
Clark J. Wang
-(dearvoid@LinuxEden:Forum)-(~/tmp)- [21637 0] ; cat chr2ascii.sh #! /bin/bash chr2ascii() { local chr=$1 if [[ ! "$chr" == [0-9a-zA-Z] ]]; then echo "$chr: [not supported]" return 1 fi local n=$(eval echo "\$((64#$chr))") if ((n < 10)); then ((n += 48)) elif ((n < 36)); then ((n += 87)) else ((n += 29)) fi echo "$chr: $n" } for chr; do chr2ascii "$chr" done -(dearvoid@LinuxEden:Forum)-(~/tmp)- [21637 0] ; ./chr2ascii.sh 0 9 A Z a z + 0: 48 9: 57 A: 65 Z: 90 a: 97 z: 122 +: [not supported] -(dearvoid@LinuxEden:Forum)-(~/tmp)- [21637 1] ; bye
查看个人网站
查看详细资料
TOP
-(dearvoid@LinuxEden:Forum)-(~/void/bash)- [$$=3943 $?=0] ; cat chr2ascii.sh #!/bin/bash for i; do printf 'ord(%s) = %d\n' $i "'$i" done -(dearvoid@LinuxEden:Forum)-(~/void/bash)- [$$=3943 $?=0] ; ./chr2ascii.sh a b c 1 2 3 - + ord(a) = 97 ord(b) = 98 ord(c) = 99 ord(1) = 49 ord(2) = 50 ord(3) = 51 ord(-) = 45 ord(+) = 43 -(dearvoid@LinuxEden:Forum)-(~/void/bash)- [$$=3943 $?=0] ; bye
超级版主
printf 'ord(%s) = %d\n' $i "'$i"