C#使用GUID(全局統(tǒng)一標(biāo)識符)
一、簡介
1.什么是GUID?
全局唯一標(biāo)識符(GUID,Globally Unique Identifier),GUID也稱作 UUID(Universally Unique IDentifier) 。GUID是一種由算法生成的二進(jìn)制長度為128位的數(shù)字標(biāo)識符。GUID主要用于在擁有多個(gè)節(jié)點(diǎn)、多臺計(jì)算機(jī)的網(wǎng)絡(luò)或系統(tǒng)中。
2.為什么要使用GUID?
在理想情況下,任何計(jì)算機(jī)和計(jì)算機(jī)集群都不會生成兩個(gè)相同的GUID。GUID 的總數(shù)達(dá)到了2^128(3.4×10^38)個(gè),所以隨機(jī)生成兩個(gè)相同GUID的可能性非常小,但并不為0。GUID一詞有時(shí)也專指微軟對UUID標(biāo)準(zhǔn)的實(shí)現(xiàn)。
(1). GUID(全局統(tǒng)一標(biāo)識符)是指在一臺機(jī)器上生成的數(shù)字,它保證對在同一時(shí)空中的所有機(jī)器都是唯一的。
通常平臺會提供生成GUID的API。生成算法很有意思,用到了以太網(wǎng)卡地址、納秒級時(shí)間、芯片ID碼和許多可能的數(shù)字。GUID的唯一缺陷在于生成的結(jié)果串會比較大。
(2). GUID永遠(yuǎn)是方便的
對于程序開發(fā)的各個(gè)方面,.NET Framework簡化了建立和處理GUID數(shù)值的過程。在.NET程序需要的地方,這一功能很容易地生成唯一的數(shù)值。
二、代碼案例
class Program { static void Main(string[] args) { var uuid = Guid.NewGuid().ToString(); // 67b69599-5026-4765-8707-def49a214219 var uuidN = Guid.NewGuid().ToString("N"); // f93618e93beb4a4181526d7a38c169a4 var uuidD = Guid.NewGuid().ToString("D"); //c747ac63-a9c2-46f9-80d7-f635c330a59f var uuidB = Guid.NewGuid().ToString("B"); // {2a77d03e-0366-4977-97f1-229c17fe906f} var uuidP = Guid.NewGuid().ToString("P"); // (8165193f-8595-439d-bbaf-9ce55171eecf) var uuidX = Guid.NewGuid().ToString("X"); // {0x48645e66,0xbe0c,0x4990,{0x8e,0xee,0x3c,0x84,0xba,0xda,0x0d,0x83}} var guid1 = GenerateId1();//5a0aec9398c64e09 var guid2 = GenerateId2();//4976172849618296785 } private static string GenerateId1() { long i = 1; foreach (byte b in Guid.NewGuid().ToByteArray()) { i *= ((int)b + 1); } return string.Format("{0:x}", i - DateTime.Now.Ticks); } private static long GenerateId2() { byte[] buffer = Guid.NewGuid().ToByteArray(); return BitConverter.ToInt64(buffer, 0); } }
三、總結(jié)
這里的D,N,B,P是不區(qū)分大小寫的,如果傳入空字符串,則使用的默認(rèn)的D類型,其它情況都會報(bào)異常。
到此這篇關(guān)于C#使用GUID(全局統(tǒng)一標(biāo)識符)的文章就介紹到這了。希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
C#使用FluentScheduler實(shí)現(xiàn)觸發(fā)定時(shí)任務(wù)
FluentScheduler是.Net平臺下的一個(gè)自動(dòng)任務(wù)調(diào)度組件,這篇文章主要為大家詳細(xì)介紹了C#如何使用FluentScheduler實(shí)現(xiàn)觸發(fā)定時(shí)任務(wù),感興趣的小伙伴可以了解下2023-12-12Unity?UGUI的VerticalLayoutGroup垂直布局組件介紹使用
這篇文章主要為大家介紹了Unity?UGUI的VerticalLayoutGroup垂直布局組件介紹使用,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-07-07- RSA解決了對稱加密的一個(gè)不足,比如AES算法加密和解密時(shí)使用的是同一個(gè)秘鑰,因此這個(gè)秘鑰不能公開,因此對于需要公開秘鑰的場合,我們需要在加密和解密過程中使用不同的秘鑰,加密使用的公鑰可以公開,解密使用的私鑰要保密,這就是非對稱加密的好處?!?/div> 2021-06-06
C#客戶端程序調(diào)用外部程序的3種實(shí)現(xiàn)方法
這篇文章主要給大家介紹了關(guān)于C#客戶端程序調(diào)用外部程序的3種實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。2018-04-04c#中WinForm使用OpencvSharp4實(shí)現(xiàn)簡易抓邊
本文主要介紹了c#中WinForm使用OpencvSharp4實(shí)現(xiàn)簡易抓邊,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-05-05C#利用itext實(shí)現(xiàn)PDF頁面處理與切分
這篇文章主要介紹了如何在C#中使用itext做一個(gè)pdf的頁面大小一致性處理,然后再根據(jù)數(shù)據(jù)切分出需要的pdf,感興趣的小伙伴可以了解一下2022-04-04詳解C#如何在不同工作簿之間復(fù)制選定單元格區(qū)域
處理Excel文檔時(shí),我們經(jīng)常需要將數(shù)據(jù)整合到一個(gè)工作表以便于我們進(jìn)行管理或數(shù)據(jù)對比。本文將演示如何通過編程方式將選定的單元格區(qū)域從一個(gè)工作簿復(fù)制到另一個(gè)工作簿2023-02-02最新評論