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