2014-03-31 25 views
0

說我有這個GUID:如何將GUID的一部分轉換爲長整型?

57F67098-00A9-4F78-A729-4234F5AC512C 

我只想最後一部分(4234F5AC512C)轉換爲一個長在C#。

+0

嗯不,我不想生成一個隨機數,我有實體的身份證只有GUIDs,他們需要經過一個過程,只需要數字的ID和最多15個字符(不要問我,我沒有設計任何它,我只是填補了空白) – IWriteApps

+0

@ giordano261如果兩個實體具有不同的GUID但最後一個段是相同的,你會做什麼? –

+0

@D Stanley幸運的是,這個數據來自哪裏的表預計不會超過500個記錄,所以這不應該成爲問題。 – IWriteApps

回答

1

獲取字符串的最後部分,然後使用帶過載的Convert.ToInt64接受基數16進行轉換。

Guid g = new Guid("57F67098-00A9-4F78-A729-4234F5AC512C"); 
int pos = g.ToString().LastIndexOf('-'); 
string part = g.ToString().Substring(pos+1); 
long result = Convert.ToInt64(part, 16); 
Console.WriteLine(result.ToString()); 
1

嘗試

long result = BitConverter.ToInt64(yourGuid.ToByteArray(), 8); 

這將使用最後8個字節,而不僅僅是過去六年。如果只需要六個字節,則可以追加& 0xFFFFFFFFFFFF

未經測試。檢查字節順序和字節是否符合要求。

+2

雖然照顧排序。我喜歡這個,因爲它不使用基於字符串的方法。 – Caramiriel