我正在依靠僞semver版本號(僅使用主要,次要和補丁號)來索引文件。Semver的數字和可訂購hashsum
爲了更快的比較和查找以及這樣做的樂趣,我試圖爲這些版本號計算一個數字「哈希」。這個數字哈希應具有以下特性(以下極端的例子):
Hash(1.0.500) < Hash(1.1.0) < Hash(1.3000.0) < Hash(2.0.0)
我已經嘗試了多種解決方案一樣加權每個位置或類似這樣的
int hash = 17;
hash = hash * 42 + Major;
hash = hash * 42 + Minor;
hash = hash * 42 + Patch;
這些但這一切可以快速到達極限(乘數或重量以下),其中
Hash(1.0.1500) > Hash(1.1.0)
我可以選擇一個骯髒的方式,去一個大的乘數,以避免這種碰撞(並確保組合的最小數量),但我更願意選擇清潔路徑
這甚至可能嗎?
是否對索引的每個部分都有任何大小限制? – kaushik
我想避免引入大小限制,但關於亨利的迴應,我認爲我必須去 – Binary9