簡體   English   中英

如何從字符串生成唯一整數?

[英]How to generate unique integer from string?

我有一些帶有異構密鑰的類 - int和string - 我希望通過通用接口使用它們。 將int轉換為字符串非常簡單,但顯然會導致性能問題。 我看到的另一個選項是將它們設置為“對象”,這看起來似乎並不完美,或者以某種方式從字符串生成唯一的整數(前“string”和“int”之間不會有連接,因此它們必須僅在“字符串“域”和這里的quetsion是“如何”?

只需使用string.GetHashCode() ,它從具有非常低的沖突概率的string返回一個int

請注意string.GetHashCode()

.Net文檔說明https://msdn.microsoft.com/en-us/library/system.string.gethashcode(v=vs.110).aspx

哈希碼本身並不保證穩定。 對於單個版本的.NET Framework,相同字符串狀態的哈希代碼可以在.NET Framework的各個版本和跨平台(例如32位和64位)之間有所不同。 在某些情況下,它們甚至可能因應用領域而異

正如@tudor所指出的,GetHashCode是從字符串(和其他對象)生成哈希代碼的受支持方式。 遺憾的是,除非您對字符串集嚴格限制,否則無法進行此類轉換,因此整數表示唯一字符串。

即如果你的字符串足夠短(即2個Unicode或4個ASCII字符)而不是明顯的一對一映射,或者你的字符串集是有限的並且事先已知。

關於這個主題的一些解讀:潛在的問題稱為鴿子原則 ,保證碰撞。 由於生日矛盾 ,很可能會在相當小的集合上發生碰撞。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM