所以我有一個第三方應用程序,我必須連接,這個應用程序需要我的用戶表中的用戶ID。問題是我將我的用戶ID存儲爲GUID,第三方應用只接受一個整數。所以我認爲,如果有一種方法可以將GUID轉換爲整數,那麼可以將其轉換回來(因爲我從他們的服務器獲取有關用戶ID的通信),那麼我不必重新編碼太多。有任何想法嗎?將GUID轉換爲整數和返回
回答
你需要一個庫從GUID到第三方的整數的映射:無論是新的「INT thirdPartyId」在現有的用戶表中的字段,或一個新表。
Guid比整數大得多,並且不能放入整數。
您需要一個128位的整數類型來保存等價的GUID。您可以使用Guid的ToByteArray()方法來獲取字節和接受字節數組的構造函數來恢復Guid。
您也可以將您的GetHashCode()方法來獲得一個整數,而是兩個不同的GUID可能具有相同的散列碼,因爲有更多可能的GUID超過32位整數。
的整數使用32位,而GUID是128位 - 因此,有沒有辦法爲GUID轉換爲整數而不丟失信息,所以你可以把它轉換回來。
編輯:您可以將GUID也許存儲到您指定每一個唯一的整數ID的GUID的表。這樣,您可以在給定整數ID的情況下獲取GUID。
添加整數標識列,基本上是第二個ID列,並將該列ID賦予應用程序。
創建一個新的表(MyUserMappings)具有兩列
1)ThirdPartyUserID(INT,NOT NULL,IDENTITY(1,1))
2)MyUserID(GUID,NOTNULL)
插入做
INSERT INTO MyUserMappings(MyUserID) SELECT MyGUIDUserID FROM MyUsers所有GUID從用戶名到該表
您還需要在MyUsers表上放置一個觸發器,以便每當MyUsers表獲取新行時,都會在MyUsersMappings表中插入一個新行。
現在創建一個視圖,顯示從您的MyUsermappingsTable您MyUsers表和第三方用戶ID字段中的所有領域。
現在,您不需要對現有應用程序進行任何DAL更改,並且原始表格不受影響。所以你現有的應用程序將保持原樣。而你的新代碼可以查詢視圖而不是表格來返回整數ID和所有其他用戶信息。
乾杯。
- 1. 將URI轉換爲GUID
- 2. 將GUID轉換爲varchar(32)
- 3. 將GUID轉換爲System.Drawing.Imaging.ImageFormat
- 4. Flex:將GUID轉換爲Base64
- 5. 將GUID轉換爲等價數字
- 6. 將整數轉換回SecByteBlock?
- 7. 將返回的值轉換爲x位長整數
- 8. 將字符串值轉換回GUID值
- 9. PHP轉換(整數)返回字符串
- 10. Guid最快轉換爲字符串並返回?
- 11. SQL Server 2008從BIGINT轉換爲UNIQUEIDENTIFIER/GUID並返回
- 12. 將NSString轉換爲整數
- 13. 將varchar轉換爲整數
- 14. 將bytearray轉換爲整數
- 15. 將BigDecimal轉換爲整數
- 16. 將整數指針轉換爲整數
- 17. 無法將ProviderUserKey轉換爲GUID?
- 18. 如何將byte [100]轉換爲guid
- 19. 如何將Guid []轉換爲String?
- 20. 將MongoDB Rest的Guid轉換爲C#CLR
- 21. 將GUID轉換爲字符串
- 22. 無法將字符串轉換爲Guid
- 23. 將對象轉換爲系統Guid
- 24. 將.NET Guid轉換爲MongoDB ObjectID
- 25. c#:將十六進制轉換爲GUID
- 26. 將長整型轉換爲整數
- 27. 將一個布爾值轉換爲一個整數返回值爲true?
- 28. Javascript:將2D整數數組轉換爲base64字符串並返回
- 29. 將double(0.1)轉換爲BigRational並返回
- 30. 將RGB轉換爲HLS並返回
整數的大小取決於系統。 – 2008-12-30 21:04:38
但是,然後,你限制自己2^32 ID。 – LeppyR64 2008-12-30 21:04:44