2024-10-02 04:24:48 发布
网友
正在查找值在mysqlbigint unsigned数据类型(0 <= n <= 18446744073709551615)范围内的字符串到整数哈希函数。将md5/sha1转换为以16为基数的整数不符合此要求。在
bigint unsigned
0 <= n <= 18446744073709551615
Java使用的rolling hash应该对您有用
来自java.lang.String:
java.lang.String
public int hashCode() { int h = hash; if (h == 0 && count > 0) { int off = offset; char val[] = value; int len = count; for (int i = 0; i < len; i++) { h = 31*h + val[off++]; } hash = h; } return h; }
其思想是将哈希计算为:
为了处理溢出,您可以添加一个步骤,在该步骤中,根据18446744073709551615检查哈希,如果它更大,则取哈希的mod和{}。在
18446744073709551615
mod
Java使用的rolling hash应该对您有用
来自
java.lang.String
:其思想是将哈希计算为:
^{pr2}$为了处理溢出,您可以添加一个步骤,在该步骤中,根据}。在
18446744073709551615
检查哈希,如果它更大,则取哈希的mod
和{相关问题 更多 >
编程相关推荐