2

我正在寻找创建递增 ID(很像车牌号)的建议。我正在寻找的不是通常的 0-9 int32 类型计数器,而是序列中每个字符的 0-9 然后 AZ。

所以我有可能拥有一个 6 字符 ID,即 '2A3DC3' 这有可能为可用值提供更大的深度。

4

2 回答 2

2

您可以创建一个自动递增的Int32ID,然后将其格式化为高于 10 的基数以获得一个短字符串。例如,看看Base36维基百科有用于编码和解码的 C# 代码)、Base32ZBase32是专门为人类使用而设计的),甚至是Excel 列名

于 2013-09-12T02:27:40.730 回答
0

这是一些按顺序执行的代码:

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();
于 2013-09-12T02:49:08.677 回答