C# GUID ToString的使用總結(jié)
最近在看到小伙伴直接使用 Guid.ToString 方法,我告訴他需要使用 Guid.ToString(“N”) 的方式輸出字符串 ,為什么需要使用 N 這個(gè)參數(shù)呢,因?yàn)槟J(rèn)的是參數(shù) D 在輸出的時(shí)候會(huì)出現(xiàn)連字符
Guid 是 Globally Unique Identifier 全局唯一標(biāo)識(shí)符的縮寫(xiě),是一種由算法生成的唯一標(biāo)識(shí),在 C# dotnet 里面的 Guid 類(lèi)是微軟的UUID標(biāo)準(zhǔn)的實(shí)現(xiàn)。
Guid.ToString 里面可以添加下面幾個(gè)參數(shù),“N”,“D”,“B”,“P”,“X” 等
如果直接使用 Guid.ToString()
那么就是使用 “D” 這個(gè)參數(shù),添加了這個(gè)參數(shù)之后的輸出格式大概如下,也就是在字符串中添加連字符
00000000-0000-0000-0000-000000000000 536b4dd7-f3dd-4664-bd69-bc0859d710ab
如果使用 “N” 那么就是只有32位數(shù)字,沒(méi)有連字符,這里的數(shù)字是 16 進(jìn)制表示的,也就是說(shuō)字符串有 a-f 這幾個(gè)英文字符和 0-9 的數(shù)字
00000000000000000000000000000000 2329fcac4fd640f1bc221e254b14d621
在我的業(yè)務(wù)里面,沒(méi)有連字符看起來(lái)比較好看,于是我就建議小伙伴使用 Guid 的字符串輸出的時(shí)候加上 N 這個(gè)參數(shù)
而在 Guid 格式化輸出里面,可以選的參數(shù)中的 B 和 P 這只是在使用括號(hào)包字符串,如以下代碼
System.Console.WriteLine(Guid.NewGuid().ToString("B")); {e34dead4-212d-442a-8f4c-e00107baec24}
System.Console.WriteLine(Guid.NewGuid().ToString("P")); (ac10d607-2b39-448f-99b5-0a3205cc9ac1)
從代碼可以看到 B 使用 { 括號(hào)包含內(nèi)容 ,使用參數(shù) P 將使用 ( 括號(hào)包含內(nèi)容
在 Guid 格式化中的最特殊的是 x 參數(shù),他會(huì)存在 4 個(gè)數(shù)字,最后一個(gè)數(shù)字是 8 個(gè)數(shù)字組合的,如下面代碼
Console.WriteLine(Guid.NewGuid().ToString("X")); {0xd3f51d9d,0x31b3,0x45f6,{0x9b,0x7c,0x89,0x1d,0xa5,0x6a,0xa3,0x43}}
GUID 轉(zhuǎn) int
一個(gè) GUID 需要 16 個(gè) byte 也就是 4 個(gè) int 才能組成,可以使用下面的方法轉(zhuǎn)換
public static int[] Guid2Int(Guid value) { byte[] b = value.ToByteArray(); int bint = BitConverter.ToInt32(b, 0); var bint1 = BitConverter.ToInt32(b, 4); var bint2 = BitConverter.ToInt32(b, 8); var bint3 = BitConverter.ToInt32(b, 12); return new[] {bint, bint1, bint2, bint3}; } public static Guid Int2Guid(int value, int value1, int value2, int value3) { byte[] bytes = new byte[16]; BitConverter.GetBytes(value).CopyTo(bytes, 0); BitConverter.GetBytes(value1).CopyTo(bytes, 4); BitConverter.GetBytes(value2).CopyTo(bytes, 8); BitConverter.GetBytes(value3).CopyTo(bytes, 12); return new Guid(bytes); }
本文會(huì)經(jīng)常更新,請(qǐng)閱讀原文: https://blog.lindexi.com/post/C-GUID-ToString.html ,以避免陳舊錯(cuò)誤知識(shí)的誤導(dǎo),同時(shí)有更好的閱讀體驗(yàn)。
以上就是C# GUID ToString的使用總結(jié)的詳細(xì)內(nèi)容,更多關(guān)于C# GUID ToString的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
- C#開(kāi)發(fā)之int與string轉(zhuǎn)化操作
- C#中的char、string和StringBuilder的使用詳解
- 淺談C#中的string駐留池
- c# String擴(kuò)展 讓你在PadLeft和PadRight時(shí)不再受單雙字節(jié)問(wèn)題困擾
- 淺談C# StringBuilder內(nèi)存碎片對(duì)性能的影響
- C# 用什么方法將BitConverter.ToString產(chǎn)生字符串再轉(zhuǎn)換回去
- C#實(shí)現(xiàn)String字符串轉(zhuǎn)化為SQL語(yǔ)句中的In后接的參數(shù)詳解
- 【C#基礎(chǔ)】Substring截取字符串的方法小結(jié)(推薦)
- C# String常用函數(shù)的使用詳解
相關(guān)文章
深入多線程之:雙向信號(hào)與競(jìng)賽的用法分析
本篇文章是對(duì)雙向信號(hào)與競(jìng)賽的用法進(jìn)行了詳細(xì)的分析介紹。需要的朋友參考下2013-05-05C#迭代器模式(Iterator Pattern)實(shí)例教程
這篇文章主要介紹了C#迭代器模式(Iterator Pattern),包括了迭代器的適用范圍及用法實(shí)例,需要的朋友可以參考下2014-09-09C#中的問(wèn)號(hào)(?號(hào))用法小結(jié)
這篇文章主要介紹了C#中的問(wèn)號(hào)(?號(hào))用法小結(jié),本文介紹了3種用法,分別作為修飾符、運(yùn)算符的用法,需要的朋友可以參考下2014-07-07C#實(shí)現(xiàn)Dev Grid拖拽移動(dòng)行的方法
這篇文章主要介紹了C#實(shí)現(xiàn)Dev Grid拖拽移動(dòng)行的方法,可實(shí)現(xiàn)Dev Grid拖拽移動(dòng)行的效果,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-05-05