创建不是正常意义上的 GUID/UUID 的复杂 UID
本文关键字:GUID 复杂 UID UUID 意义上 创建 | 更新日期: 2023-09-27 18:30:56
我正在寻找创建递增ID的建议(很像车牌号)。而不是通常的 0-9 int32 类型计数器,我正在寻找的东西可以去 0-9 然后序列中每个字符的 A-Z。
所以我有可能有一个 6 个字符的 ID,这将是"2A3DC3"这有可能为可用值提供更大的深度。
您可以创建一个自动递增的Int32
ID,然后将其格式化为大于 10 的基数以获得短字符串。例如,看看Base36(维基百科有用于编码和解码的C#代码),Base32(ZBase32是专门为人类消费而设计的),甚至是Excel列名。
下面是一些按顺序执行的代码:
var allDigits = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
var @base = allDigits.Length;
var a = new StringBuilder();
var start = 2176782336; // minimum 6 digit base36 number
var end = 76187381759; // maximum 6 digit base36 number
Enumerable.Range(1, 1000)
.Select(n => {
int r;
var d = n + start;
a.Clear();
do
{
r = (int)(d % @base);
d = d / @base;
a.Insert(0, allDigits[r]);
} while(d >= @base);
a.Insert(0, allDigits[r]);
return a.ToString();
})
.Dump();