如何將32位無符號整數(0〜4294967295)散列爲10位無符號整型(0〜1023)?如果方便的話,請用C/C++編寫示例。如何散列一個32位int到10bit int?
對不起,我沒有問好,這不是我的功課。也許問題背景會有所幫助。我正在編寫一個服務器,該服務器必須處理來自每個客戶端的1024個連接。每個客戶端都有自己的獨立IP地址,存儲爲32位無符號整數。這就是問題的由來。
如何將32位無符號整數(0〜4294967295)散列爲10位無符號整型(0〜1023)?如果方便的話,請用C/C++編寫示例。如何散列一個32位int到10bit int?
對不起,我沒有問好,這不是我的功課。也許問題背景會有所幫助。我正在編寫一個服務器,該服務器必須處理來自每個客戶端的1024個連接。每個客戶端都有自己的獨立IP地址,存儲爲32位無符號整數。這就是問題的由來。
在某些條件下(如不得不散列最多2^10個已知項目),您可以不發生衝突。爲了獲得更多速度,容忍一點碰撞可能會有所幫助。更多的是,這裏 http://en.wikipedia.org/wiki/Perfect_hash_function
GNU完善哈希函數發生器http://www.gnu.org/software/gperf/
一個廉價的,低大小關鍵是哈希散列皮爾森http://en.wikipedia.org/wiki/Pearson_hashing
作爲您的條件,我必須散列<2^10個已知項目。感謝您的幫助。 – 2011-03-27 06:02:52
你一定會有衝突。另外,*我們不會爲您編寫代碼*。請向我們展示您自己的努力,我們將很樂意幫助您解決具體問題。 – 2011-03-25 09:11:30
StackOverflow是一個可以在遇到問題時提出問題的地方,而不是要求他人爲您做功課的地方。如果你的代碼不總是工作,或者你認爲它需要太長時間,或者你不知道如何降低衝突率等,那麼請隨時回來尋求幫助。 – sarnold 2011-03-25 09:11:55
我不認爲你可以在這裏避免碰撞 – 2011-03-25 09:12:09