0
我有一个哈希函数返回给我一个无符号整数uint32_t
给予char*
,如下图所示:将无符号整数转换回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) != '\0'; ++word)
{
h ^= ((h<<5) + c + (h >> 2));
}
return ((uint32_t)(h&0x7fffffff) % tsize);
}
现在我想做的事情刚好相反:比方说,我一直在考虑uint32_t
号,我想恢复回到之前在char*
的原始形式。我怎样才能做到这一点?基本上我的uint32_t
数字应该让我回到原来的通过*。
散列算法是一种方法。你不能颠倒散列来产生原始的'char *'。唯一的选择是使用蛮力 - 通过算法运行每个可能的'char *'值,直到找到产生相同散列值的值。 –
你似乎误解了散列的概念... – John3136
类似的问题:http://stackoverflow.com/questions/29912220/crc16-to-string – samgak