• 自定义进制规则的转换思路


    项目碰到一个需求,流水号自增,但是自增不是10进制。是任意进制,并且规则可以任意定义,过滤一些不用的字符。比如说用6进制 012345,用abcdef。

    处理思路:正常存储还是用正常10进制处理。单独记录下需要的规则abcdef。然后调用下面的switchHEX方法即可

    Integer自带2,8,16进制的转换,进入Integer或者BigInteger类看看就行。

     	public static void main(String[] args) {
            System.out.println(switchHEX(100,6,"abcdef"));
        }
        
    	/**
         * 常规的进制转换,非自定义的
         * number 要转换的数
         * from 原数的进制
         * to 要转换成的进制
         * 注意进制是2进制到36之间。
         */
        private static String changeHEX(String number, int from, int to) {
            return new BigInteger(number, from).toString(to);
        }
    
        /**
         * 自定义的 进制转换
         * value 10进制的数据
         * base 要转换的进制
         * valueEnum 自定义的进制规则
         * switchHEX(100,2,"01")
         */
        private static String switchHEX(int value, int base, String valueEnum) {
            StringBuilder sb = new StringBuilder();
            String digits = valueEnum.substring(0, base);
            Stack<Character> s = new Stack<>();
            while (value != 0) {
                s.push(digits.charAt(value % base));
                value /= base;
            }
            while (!s.isEmpty()) {
                sb.append(s.pop());
            }
            return sb.toString();
        }
       
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36

    效果:
    在这里插入图片描述
    通过这个方法,就可以任意规则的进制处理了。

  • 相关阅读:
    MongoDB入门学习(一)
    使用 webpack 打包时,如何更好地利用 long term cache
    Blazor双向绑定
    如何撰写综述性论文
    Apicat更新Nginx自动恶意拦截功能
    初次安装Pytorch过程
    优化算法 - Adam算法
    VSFTPD2.3.4(笑脸漏洞)复现
    OSPF高级配置——学习OSPF路由协议的高级应用
    机器学习基础-数据分析:房价预测
  • 原文地址:https://blog.csdn.net/u013788943/article/details/125623882