It is not possible to shorten it without loosing some of the uniqueness of the GUID, but we can come a long way if we can accept a 16 character string instead.
We can change the standard GUID string representation:
21726045-e8f7-4b09-abd8-4bcc926e9e28
Into a shorter string:
3c4ebc5f5f2c4edc
The following method creates the shorter string and it is actually very unique. An iteration of 10 million didn.t create a duplicate. It uses the uniqueness of a GUID to create the string.
private string GenerateId()
{
long i = 1;
foreach (byte b in Guid.NewGuid().ToByteArray())
{
i *= ((int)b + 1);
}
return string.Format("{0:x}", i - DateTime.Now.Ticks);
}
If you instead want numbers instead of a string, you can do that to but then you need to go up to 19 characters. The following method converts a GUID to an Int64.
private long GenerateId()
{
byte[] buffer = Guid.NewGuid().ToByteArray();
return BitConverter.ToInt64(buffer, 0);
}
The standard GUID is still the best way to ensure the uniqueness even though it isn't 100% unique.
No comments:
Post a Comment