生成36进制流水号_C#

机制间在线转换

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;
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值