【问题标题】:C hashing function taking 2 numbersC散列函数采用2个数字
【发布时间】:2021-05-17 16:50:25
【问题描述】:

我需要一个非密码散列函数,它接受 2 个 32 位无符号整数并只返回一个。有这样的哈希算法吗?我将如何创建一个?

【问题讨论】:

  • 不,这样的功能不存在。您必须自己创建它。 (这很容易)
  • 你需要它做什么?

标签: c hash


【解决方案1】:

这个函数是我基于djb2a写的:

uint32_t hash(uint32_t n, uint32_t n2) {
    uint32_t hash = 5381;
    {
        int c;
        
        while ((c = n>>=2))
                hash = hash * 33 ^ c;
        while ((c = n2<<=2))
                hash = hash * 33 ^ c;
    }
    
    return hash;
}

【讨论】:

    猜你喜欢
    • 2021-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-21
    • 2010-10-19
    • 1970-01-01
    • 2011-01-15
    相关资源
    最近更新 更多