亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何使用 C# 生成 UUID 版本 4

如何使用 C# 生成 UUID 版本 4

C#
喵喔喔 2022-12-24 15:02:46
我的要求是從 C# 代碼為谷歌 API 會話令牌生成版本 4 UUID,我不確定Guid.NewGuid()方法,它返回哪個版本的 GUID。喜歡的版本閱讀谷歌和博客但沒有得到確定的答案 Guid.NewGuid() 是否根據 RFC4122 生成 UUID 版本 4?提前致謝
查看完整描述

1 回答

?
Helenr

TA貢獻1780條經驗 獲得超4個贊

GUID 是 V4...您生成的每個 GUID 都將如下所示


18acac20-991e-437e-9529-a441452f6b7e

d6d68639-64c2-452e-95b7-16cf6dbf5301

b0943b6d-4779-4771-92bf-cc2d634fb671

218b5620-d30d-46d9-9c88-38a4ac64266e

de03042c-792f-4689-80ca-26287ceb2129

1175bb5d-d35e-4a46-aaac-0825c749dc3a

42864583-c0f6-4e44-8710-39c9a9146d43

223ca924-4b77-4931-bb94-c1d371894683

2c4495ab-19e4-4aeb-b647-10db8625791c

f5894345-cbe3-4fc7-92c3-d6d863f70411

              ^    ^

              1    2

1上面位置的數字總是位置上4的數字2總是8, 9,A或中的一個B。


您可以通過以下方式確認


var cts = new CancellationTokenSource();


var parallelOptions = new ParallelOptions() { MaxDegreeOfParallelism = 8, CancellationToken = cts.Token };

Parallel.For(0, int.MaxValue, parallelOptions, (i) =>

{

    var guid = Guid.NewGuid().ToString();

    var four = guid.ElementAt(14);

    var ab89 = guid.ElementAt(19);


    if (four != '4') cts.Cancel();

    if (ab89 != 'a' && ab89 != 'b' && ab89 != '8' && ab89 != '9') cts.Cancel();


    if ((i % 100000) == 0 && i < (int.MaxValue / 8))

    {

        Console.WriteLine($"{i * 8:n}"); // roughly   

    }

});

如果您有疑問,這將在合理的時間內進行 40 億次嘗試


查看完整回答
反對 回復 2022-12-24
  • 1 回答
  • 0 關注
  • 233 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號