首页 > 编程语言 >C# 流水号序列号生成 [0,9]~[A,Z]

C# 流水号序列号生成 [0,9]~[A,Z]

时间:2022-12-02 18:26:02浏览次数:42  
标签:NumByteArr ch 48 C# AddChar 流水号 90 序列号 byte

public class SerialNum
{
    public SerialNum()
    {
        m_NumByteArr = new byte[4] { 48, 48, 48, 48 };
        //m_NumByteArr = new byte[4] { 90, 90, 90, 90 };
        ExcludeChar = new List<byte>
        {
           (byte) 'A',
           (byte) 'E',
           (byte) 'I',
           (byte) 'O',
           (byte) 'U'
        };
    }

    public List<byte> ExcludeChar { get; }

    /**0~9  十进制ASCII码[48, 57] **/
    /**A~Z  十进制ASCII码[65, 90]**/
    public string Number
    {
        get
        {
            return Encoding.Default.GetString(m_NumByteArr);
        }
    }
    protected byte[] m_NumByteArr;

    public bool AddOne()
    {
        m_NumByteArr[3] = AddChar(m_NumByteArr[3]);
        if (m_NumByteArr[3] > (byte)'Z')
        {
            m_NumByteArr[2] = AddChar(m_NumByteArr[2]);
            m_NumByteArr[3] = (byte)'0';
        }
        if (m_NumByteArr[2] > (byte)'Z')
        {
            m_NumByteArr[1] = AddChar(m_NumByteArr[1]);
            m_NumByteArr[2] = (byte)'0';
        }
        if (m_NumByteArr[1] > (byte)'Z')
        {
            m_NumByteArr[0] = AddChar(m_NumByteArr[0]);
            m_NumByteArr[1] = (byte)'0';
        }

        return m_NumByteArr[0] <= (byte)'Z';
    }

    public bool SubOne()
    {
        m_NumByteArr[3] = SubChar(m_NumByteArr[3]);
        if (m_NumByteArr[3] < (byte)'0')
        {
            m_NumByteArr[2] = SubChar(m_NumByteArr[2]);
            m_NumByteArr[3] = (byte)'Z';
        }
        if (m_NumByteArr[2] < (byte)'0')
        {
            m_NumByteArr[1] = SubChar(m_NumByteArr[1]);
            m_NumByteArr[2] = (byte)'Z';
        }
        if (m_NumByteArr[1] < (byte)'0')
        {
            m_NumByteArr[0] = SubChar(m_NumByteArr[0]);
            m_NumByteArr[1] = (byte)'Z';
        }

        return m_NumByteArr[0] >= (byte)'0';
    }

    private byte AddChar(byte ch)
    {
        while (true)
        {
            ch++;
            if (!ExcludeChar.Contains(ch))
            {
                break;
            }
        }

        if (ch == ((byte)'9' + 1))
        {
            ch = (byte)'B';
        }
        return ch;
    }
    private byte SubChar(byte ch)
    {
        while (true)
        {
            ch--;
            if (!ExcludeChar.Contains(ch))
            {
                break;
            }
        }

        if (ch == ((byte)'A' - 1))
        {
            ch = (byte)'9';
        }

        return ch;
    }
}

标签:NumByteArr,ch,48,C#,AddChar,流水号,90,序列号,byte
From: https://www.cnblogs.com/huvjie/p/16945272.html

相关文章

  • Redis cluster 扩容与缩容
    Redis群集TCP端口每个Redis集群节点都需要两个开放的TCP连接:一个用于服务客户端的RedisTCP端口,例如6379,以及第二个称为集群总线端口的端口。默认情况下,集群总线端口是通......
  • C# List间的交集并集差集
    http://t.zoukankan.com/qtiger-p-13475292.html......
  • RectTransform
      localPosition中心点对于父节点中心点  anchoredPosition  offsetMaxoffsetMinsizeDeltarect.positionrect.size......
  • wechaty机器人1.0版本不足以及一些规范
    不足:1.如果某个团队发送多个通知会出现冲突,用户回复不知是回复哪个通知暂时解决方法:限制一个团队的未结束通知只有一个,增加一个可以主动结束通知的功能!后续可以进行优化......
  • acw 145. 超市
    超市里有n件商品,每件商品都有利润v[i]和过期时间tm[i],每天只能卖一件商品,过期商品不能卖。求可以得到的最大收益 #include"bits/stdc++.h"usingnamespacestd;......
  • linux的oracle系统管理员查询信息
    目录linux的oracle系统管理员查询信息1、查询用户2、修改密码3、查询表空间(dbf)4、查询系统管理路径5、查询系统版本信息6、查询版本可执行权限linux的oracle系统管理员查......
  • Codeforces Round #816 (Div. 2)
    [比赛链接](Dashboard-CodeforcesRound#816(Div.2)-Codeforces)B题意:给定数组长度n,参数k,\(\sum_{1}^{n}a_i/k=b\),并且区间和是s。其中b和s都是题目给定的。核......
  • 第1部分 使用C#和.NET (Code like pro in C#)
    在本书的第一部分,我们将简要介绍C#语言,并讨论它的一些特性。第1章介绍了什么是C#和.NET,以及为什么您会(也不会)在项目中使用它们。第2章深入探讨了.NET的各种迭代,并在编译过......
  • v-for指令--列表渲染、列表过滤(computed和watch)、列表排序
    v-for指令1.用于展示列表数据2.语法:v-for="(item,index)inxxx":key="yyy"3.可遍历:数组、对象、字符串、指定次数<template><!--遍历数组--><h2>列表渲染</h2><ul......
  • About this book (Code like pro in C#)
    本书以您现有的编程技能为基础,帮助您无缝提升您的编码实践或从Java或其他面向对象语言过渡到C#。您将学习编写对企业开发至关重要的惯用C#代码。这本书讨论了基本的后端技......