ascii->int

ASCII コードから int への変換についての質問です。

echo $1 | awk '
BEGIN       {a2i["A"]= 65; a2i["B"]= 66; a2i["C"]= 67; a2i["D"]= 68;
             a2i["E"]= 69; a2i["F"]= 70; a2i["G"]= 71; a2i["H"]= 72;
             a2i["I"]= 73; a2i["J"]= 74; a2i["K"]= 75; a2i["L"]= 76;
             a2i["M"]= 77; a2i["N"]= 78; a2i["O"]= 79; a2i["P"]= 80;
             a2i["Q"]= 81; a2i["R"]= 82; a2i["S"]= 83; a2i["T"]= 84;
             a2i["U"]= 85; a2i["V"]= 86; a2i["W"]= 87; a2i["X"]= 88;
             a2i["Y"]= 89; a2i["Z"]= 90;
             a2i["a"]= 97; a2i["b"]= 98; a2i["c"]= 99; a2i["d"]=100;
             a2i["e"]=101; a2i["f"]=102; a2i["g"]=103; a2i["h"]=104;
             a2i["i"]=105; a2i["j"]=106; a2i["k"]=107; a2i["l"]=108;
             a2i["m"]=109; a2i["n"]=110; a2i["o"]=111; a2i["p"]=112;
             a2i["q"]=113; a2i["r"]=114; a2i["s"]=115; a2i["t"]=116;
             a2i["u"]=117; a2i["v"]=118; a2i["w"]=119; a2i["x"]=120;
             a2i["y"]=121; a2i["z"]=122;}
$1 in a2i   {end=a2i[$1];
             start=65;
             if(end>90) start=97
             for(c=start; c<=end; c++) printf "%c\n", c;
             next;}
            {exit 1;}'

と冗長に書いてもよし、

BEGIN{
# Create a lookup table with characters as indexes and values as data.
    for( i = 0; i <= 255; i++ )  CharNums[ sprintf( "%c", i)] = i
}                                                                                            
{
# $0 is a single character - look up the value.
    print CharNums[ $0 ]
}                                                                                            

とスマートに書いてもよし。