我正在实施adler32 checksum的rolling版本。 这answer有助于仔细检查我的数学。然而,我正努力在golang中正确实施它。 我写了下面的代码: func roll(adler, n, leave, enter uint32) uint32 {
a := adler & 0xffff
b := adler >> 16
a = (a + ente
如果你不熟悉universal hashing,它主要是试图保证少量的碰撞(相反,使用普通的旧模),使用一些相当简单的数学涉及随机性。问题是,它并没有为我工作: size_t hash_modulo(const int value) {
return (size_t) (value % TABLE_SIZE);
}
// prime 491 is used because its