关于memcached中origCompatHashingAlg算法的问题

public class TestHashs {

private static int origCompatHashingAlg( String key ) {

    int hash    = 0;
    char[] cArr = key.toCharArray();
    System.out.println("cArr Length:"+cArr.length);
    for ( int i = 0; i < cArr.length; ++i ) {
        System.out.println("for "+ (hash * 33) + cArr[i]);
        hash = (hash * 33) + cArr[i];
        System.out.println(hash);
    }

    return hash;
}
public static void main(String[] args) {
    System.out.println(origCompatHashingAlg("123"));
}

}

结果如下:
cArr Length:3
for 01
49
for 16172
1667
for 550113
55062
55062

我想知道从01到49的过程java中是怎么具体处理的?