将无符号整数转换回 char*?

Convert an unsigned integer back to char*?

我有一个散列函数 returns 返回给我一个无符号整数 uint32_t 给定 char* 如下所示:

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) != '[=10=]'; ++word)
    {
        h ^= ( (h<<5) + c + (h >> 2) );
    }
    return ((uint32_t)(h&0x7fffffff) % tsize);
}

现在我想做相反的事情:假设我得到了 uint32_t 号码,我想恢复到之前在 char* 中的原始形式。我怎样才能做到这一点?基本上我的 uint32_t 号码应该给我返回传递的原始 char*。

由于散列冲突,这不会起作用:字节数组有任意多种可能的排列,但只有固定数量的不同 uint32_t,因此一堆不同的 char * 正在发生散列到 相同 uint32_t 值。