我正在實施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