不知道现有的builtin的工具如何把 char 转成 int

写了一个只支持字母和数字的:
引用:
-(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
      
今日偶得, 共享:
引用:
-(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"
最后一个单引号是啥用法?
printf支持的格式转化居然是这么方便

dearvoid有心了, 火星帖都被你翻出来了      
我也不知道这是什么用法, 文档里未见说明, 跟别人学的
虽然这个帖子很老了, 俺可一直都挂念着这个问题呢