2013-04-15 53 views
0

關於這個問題已經有很多答案,但我找不到任何看起來像我正在尋找的東西。根據給定的字符串生成一個唯一的整數

我需要從給定的字符串生成唯一的負ID(int)。如果有解碼也會很高興,但不是強制性的。

+6

獨特在什麼情況下?通用,每個網絡,每臺計算機,每個會話,每個用戶,每個進程或什麼? –

回答

4

你可以嘗試myString.GetHashCode()它不保證是唯一的,但會定義返回相同的字符串相同的密鑰。

+0

如果它不是負面的,他需要否定它。這當然會增加一倍的碰撞次數。 –

+0

謝謝。我正在使用這個,這工作正常。 – goul

+2

「散列碼本身不能保證穩定,相同字符串的散列碼可以在不同版本的.NET Framework和不同版本的.NET Framework的平臺(如32位和64位)上有所不同。在某些情況下,它們甚至可能因應用領域而不同。「 https://msdn.microsoft.com/en-us/library/system.string.gethashcode(v=vs.110).aspx – jasdefer

4

顯然,沒有這樣的轉換。大小受限於32位,而string大小几乎是無限的。除非對字符串應用某些限制,否則將會發生衝突。

+1

好評。我正在使用下面提出的答案,但會注意我的字符串長度。謝謝 – goul

0

不可能爲任意長度字符串生成一個唯一的int。

int有32位數據,一串100個字符(假設C#)將有1600位數據,所以你至少有1600/32的衝突。

[搞笑]

你可以:

string a = "dgfadg"; 
var bytes = System.Text.Encoding.Unicode.GetBytes(a); 
BigInteger integer= new BigInteger(bytes); 

[/搞笑]

+1

上帝,太長了.... – Elaine

相關問題