字符运算

字符运算

各位,我初学perl,有一个问题希望大家多多帮忙

我想把下面这个c函数翻译成perl,可是perl中的字符放到运算表达式后就自动转化为数字了,不能按照ascii码运算。不知道有什么办法实现?

[Copy to clipboard] [ - ]
CODE:
int calcPartitionNum(const char *md5)
{
    if (!md5 || strlen(md5) < 32)
        return -1;

    int d1 = md5[31];
    if (d1 >= 48 && d1 <= 57)
        d1 -= 48;
    else
        d1 -= 87;

    int d2 = md5[30];
    if (d2 >= 48 && d2 <= 57)
        d2 -= 48;
    else
        d2 -= 87;

    int d3 = md5[29];
    if (d3 >= 48 && d3 <= 57)
        d3 -= 48;
    else
        d3 -= 87;

    return (d3 % 4) * 256 + d2 * 16 + d1;
}

sub calPartitionNum
{
        # $_[0] is md5
                .............
}
perl里面有个函数叫ord
数字和数字字符串在perl里,在我看来,没什么区别,也不须转换,关键是运算符不同,比如$a = 123,$b =1 ;$a + $bwill be 124, and $a . $b will be 1231.
好像是挺难办的噢,必须自己化成asicc码……晕了
$a=ord('a')+1;
printf("%c",$a);

ord函数很不错啊,哈哈……
正解
转过去再换回来啊,就是麻烦点,呵呵,但是最终麻烦的只是算法而已,自己只是多敲几行字。