我这个hash函数对么?求出的hash值是0-9之间的一串数字,怎么转换为二进制的数字?

public long Ghash(char[] h)
{
    long hash = 0;
    for (int i = 0; i < h.Length; i++)
    {
        hash = Convert.ToInt64( hash * 31 + h[i]);
    }
    return hash;
}

你这样比较容易溢出。当h比较长的时候。
hash函数无所谓对错,只要满足,相同的输入,输出相同,不同的输入,结果可以相同也可以不同,但是最好不同,就可以了。

  • 如Caozhy所说,算法如果能保证不溢出,怎么都可以
  • 转换二进制的事,你可以参考你上次的问题,里面我对怎么把一个字节转为二进制有详细的计算方法
  • http://ask.csdn.net/questions/177283