Любой способ генерировать GUID, как показано ниже? - PullRequest
0 голосов
/ 23 февраля 2011

Как мне сгенерировать GUID, который выглядит так: 00000000-0000-0000-0000-B7B9B3A4A0DE

Это должны быть все нули, кроме последней части.

Ответы [ 3 ]

9 голосов
/ 23 февраля 2011

Не совсем понятно, что вы имеете в виду.Например, это работает:

Guid guid = Guid.Parse("00000000-0000-0000-0000-B7B9B3A4A0DE");

Таким образом, вы можете без проблем конвертировать текст в Guid.Если вы хотите сгенерировать такого Guid, вы всегда можете сгенерировать 6 случайных байтов (например, с RandomNumberGenerator) и передать соответствующий байтовый массив в Guid(byte[]).Например:

using System;
using System.Security.Cryptography;

class Test
{
    static void Main()
    {
        var rng = RandomNumberGenerator.Create();
        byte[] randomBytes = new byte[6];
        rng.GetBytes(randomBytes);

        byte[] guidBytes = new byte[16];
        Buffer.BlockCopy(randomBytes, 0, guidBytes, 10, 6);

        Guid guid = new Guid(guidBytes);
        Console.WriteLine(guid);
    }
}
1 голос
/ 23 февраля 2011
new Guid("00000000-0000-0000-0000-" + Guid.NewGuid().ToString().Substring(24, 12))
1 голос
/ 23 февраля 2011

Мой совет - использовать Guid.NewGuid() для генерации стандартного Guid, преобразовать его в строку, а затем использовать new Guid('0000 etc.'), чтобы превратить его в Guid, например,

var guidString = Guid.NewGuid().ToString();
/* manipulate guidString to zero out all but the last parts */
var guid = new Guid(guidString);
...