机制间在线转换。
10进制转36进制输出到文本文件,然后可再倒入数据库中使用。
class Program
{
static void Main(string[] args)
{
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.Append("Decimal\tSerialLength\tHexadecimal\r\n");
long val = 1, maxnum = 46655;
for (long i = 1; i <= maxnum; i++)//001~ZZZ
{
stringBuilder.Append( $"{i}\t3\t{ConvertTo36(i).PadLeft(3,'0')}\r\n");
Console.WriteLine(i);
}
System.IO.File.WriteAllText("./NumPools.text", stringBuilder.ToString());
}
/// <summary>
/// 10進制轉36進制
/// </summary>
/// <param name="i">10進制值</param>
/// <returns>36進制值</returns>
public static string ConvertTo36(long i)
{
string s = "";
long j = 0;
while (i >= 36)
{
j = i % 36;
if (j < 10)
s += j.ToString();
else
s += Convert.ToChar(j + 87);
i = i / 36;
}
if (i < 10)
s += i.ToString();
else
s += Convert.ToChar(i + 87);
Char[] c = s.ToCharArray();
Array.Reverse(c);
return Convert.ToString(new string(c)).ToUpper();
}
}
/// <summary>
/// 指定十进制数值,转成指定进制的数值,例如十进制转36进制:ConvertToBase(46655,36)=>结果:ZZZ
/// </summary>
/// <param name="i">10进制数值</param>
/// <returns>要输出的进制</returns>
public String ConvertToBase(int num, int nbase)
{
String chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
// check if we can convert to another base
if(nbase < 2 || nbase > chars.Length)
return "";
int r;
String newNumber = "";
// in r we have the offset of the char that was converted to the new base
while(num >= nbase)
{
r = num % nbase;
newNumber = chars[r] + newNumber;
num = num / nbase;
}
// the last number to convert
newNumber = chars[num] + newNumber;
return newNumber;
}