[英]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.