int hash(const char* S)
{
  int V = 0;
  for (; *S != 0; S++) V = (V * P + (unsigned char)*S) % N;
  return V;
}
其中P,N为较大素数

解决方案 »

  1.   

    int hash(string S)
    {
    int V = 0;
    byte[] bytes = System.Text.Encoding.Default.GetBytes(S);
    foreach(byte b in bytes) V = (V * P + b ) % N;
    return V;
    }VC 的char 相当于C# 的 byte 8 位,一字节
    这里用 System.Text.Encoding.Default.GetBytes(S) 是用windows系统进行转换
    如果有其他需求自己改
      

  2.   

    如果是英文字母的话,也可以如下:
    int hash(string S)
    {
    int V = 0;
    for( int i = 0; i < S.Length; i++ )
    {
        V = (V * P + (int)( S[i] ) ) % N;
    }
    return V;
    }
      

  3.   

    int V = str.GetHashCode();
      

  4.   

    楼主这是线性同余散列算法,一般来讲没有.NET的String.GetHashCode好