C# GUID ToString的使用總結

最近在看到小夥伴直接使用 Guid.ToString 方法,我告訴他需要使用 Guid.ToString(“N”) 的方式輸出字符串 ,為什麼需要使用 N 這個參數呢,因為默認的是參數 D 在輸出的時候會出現連字符

Guid 是 Globally Unique Identifier 全局唯一標識符的縮寫,是一種由算法生成的唯一標識,在 C# dotnet 裡面的 Guid 類是微軟的UUID標準的實現。

Guid.ToString 裡面可以添加下面幾個參數,“N”,“D”,“B”,“P”,“X” 等

如果直接使用 Guid.ToString() 那麼就是使用 “D” 這個參數,添加瞭這個參數之後的輸出格式大概如下,也就是在字符串中添加連字符

00000000-0000-0000-0000-000000000000
536b4dd7-f3dd-4664-bd69-bc0859d710ab

如果使用 “N” 那麼就是隻有32位數字,沒有連字符,這裡的數字是 16 進制表示的,也就是說字符串有 a-f 這幾個英文字符和 0-9 的數字

00000000000000000000000000000000
2329fcac4fd640f1bc221e254b14d621

在我的業務裡面,沒有連字符看起來比較好看,於是我就建議小夥伴使用 Guid 的字符串輸出的時候加上 N 這個參數

而在 Guid 格式化輸出裡面,可以選的參數中的 B 和 P 這隻是在使用括號包字符串,如以下代碼

      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 使用 { 括號包含內容 ,使用參數 P 將使用 ( 括號包含內容

在 Guid 格式化中的最特殊的是 x 參數,他會存在 4 個數字,最後一個數字是 8 個數字組合的,如下面代碼

  Console.WriteLine(Guid.NewGuid().ToString("X"));
 {0xd3f51d9d,0x31b3,0x45f6,{0x9b,0x7c,0x89,0x1d,0xa5,0x6a,0xa3,0x43}}

GUID 轉 int

一個 GUID 需要 16 個 byte 也就是 4 個 int 才能組成,可以使用下面的方法轉換

   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);
    }

本文會經常更新,請閱讀原文: https://blog.lindexi.com/post/C-GUID-ToString.html ,以避免陳舊錯誤知識的誤導,同時有更好的閱讀體驗。

以上就是C# GUID ToString的使用總結的詳細內容,更多關於C# GUID ToString的資料請關註WalkonNet其它相關文章!

推薦閱讀: