簡體   English   中英

將無符號整數轉換回char *?

[英]Convert an unsigned integer back to char*?

我有一個哈希函數,該函數將給定char*的無符號整數uint32_t返回給我,如下所示:

uint32_t key_hashing(const char* key)
{
    return hashing(key, 0x7fffffff, 101);
}

uint32_t hashing(const char* word, int tsize, uint32_t seed)
{
    char c;
    uint32_t h = seed;
    for ( ; (c=*word) != '\0'; ++word)
    {
        h ^= ( (h<<5) + c + (h >> 2) );
    }
    return ((uint32_t)(h&0x7fffffff) % tsize);
}

現在,我想做相反的事情:假設給了我uint32_t號,我想恢復為char*之前的原始格式。 我怎樣才能做到這一點? 基本上,我的uint32_t編號應該還給我通過的原始char *。

由於哈希沖突,這種方法行不通:字節數組可以有任意多種排列,但只有固定數量的不同uint32_t ,因此一堆不同的char *將哈希到相同的 uint32_t值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM