GUID是由數字和字符組合生成的連字符。是否可以設計我們自己的算法來創建唯一的GUID?
如){7B156C47-05BC-4eb9-900E-89966AD1430D}
在Visual Studio中,我們有 '創建GUID' 工具來創建它。我希望可以通過窗口API以編程方式創建。
GUID如何變得獨特?爲什麼他們不使用#,^等任何特殊字符...
也有可能設計我們自己的算法來創建唯一的GUID?
GUID是由數字和字符組合生成的連字符。是否可以設計我們自己的算法來創建唯一的GUID?
如){7B156C47-05BC-4eb9-900E-89966AD1430D}
在Visual Studio中,我們有 '創建GUID' 工具來創建它。我希望可以通過窗口API以編程方式創建。
GUID如何變得獨特?爲什麼他們不使用#,^等任何特殊字符...
也有可能設計我們自己的算法來創建唯一的GUID?
是的,這是可能的,但是如果沒有充分的理由,你不應該嘗試重新發明輪子。
另外,還要考慮的GUID的隱私問題,如果你實現它˚F從零開始,因爲它們包含了一些人們認爲敏感的上述數據。
是的,雖然更容易使用別人的例如Boost uuid
只是爲了回答這個問題:爲什麼他們不使用任何特殊字符,如#,^等。
它應該是一個128位整數。所以常見的表示是簡單的32個十六進制。
您可以創建也使用1的長度爲128位和0等
至於問題的其餘部分,wiki具有很好的答案。
您應該通過調用爲其設計的API來創建新的GUID。在本地窗口的土地上,它是 CoCreateGUID
;在.NET土地它是System.Guid.NewGuid()
;
使用上述API創建的GUID是否有可能是唯一的? – AKN 2010-05-04 12:15:56
是的。我從未見過該API生成的兩個相同的GUID。如果你想問相反的話,那麼可以從API獲得兩個完全相同的GUID。證明:生成2^128 + 1個GUID;你一定會得到一些重複! – 2010-05-04 12:54:15
UUID被定義爲例如在http://www.faqs.org/rfcs/rfc4122.html。使用自己的算法生成類似UUID的問題是,您可能會與其他人的UUID發生衝突。因此,如果可能的話,你應該肯定使用別人的實現,如果不是,則編寫你自己的一個標準算法的實現。
你有沒有考慮HASH功能? – Guru 2010-05-04 12:18:54
你能告訴我,我該如何使用它? – AKN 2010-05-04 12:26:28