C散列函数采用2个数字

Posted

技术标签:

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

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

【问题讨论】:

不,这样的功能不存在。您必须自己创建它。 (这很容易) 你需要它做什么? 【参考方案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;

【讨论】:

以上是关于C散列函数采用2个数字的主要内容,如果未能解决你的问题,请参考以下文章

数据结构—— 散列查找:散列函数的构造方法

散列函数消息摘要与数字签名

散列函数的应用及其安全性

C 的最小散列函数?

HashMap中的散列函数冲突解决机制和rehash

在滚动散列中,散列函数的除法方法中使用的素数与为数字选择的基数之间的关系是啥?