栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

JAVA 进制转换工具

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JAVA 进制转换工具

进制转换工具类

package com;


import java.math.BigInteger;
import java.util.Arrays;


public class baseConversionUtils {
    
    public static String encrypt(String original, baseType baseType) {
        if (baseType == null) {
            throw new RuntimeException("进制转换类型不能为null");
        }
        Long length = baseType.getbaseLength();
        long value = Long.valueOf(original).longValue();
        StringBuilder builder = new StringBuilder();
        int i = 0;
        while (value != 0) {
            long t = value % length;
            if (t >= 0 && t < 10) {
                builder.append((char) (t + '0'));
            } else {
                builder.append((char) (t + 'A' - 10));
            }
            i++;
            value = value / length;
        }
        String num = builder.reverse().toString();

        while (num.startsWith("0")){
            num = num.substring(1,num.length());
        }
        return num;
    }

    
    public static String encryptByBigInt(String original, baseType baseType) {
        if (baseType == null) {
            throw new RuntimeException("进制转换类型不能为null");
        }
        BigInteger length = BigInteger.valueOf(baseType.getbaseLength());
        BigInteger value = new BigInteger(original);
        StringBuilder builder = new StringBuilder();
        int i = 0;
        while (!value.toString().equals("0")) {
            int t = value.mod(length).intValue();
            if (t >= 0 && t < 10) {
                builder.append((char) (t + '0'));
            } else {
                builder.append((char) (t + 'A' - 10));
            }
            i++;
            value = value.divide(length);
        }
        String num = builder.reverse().toString();

        while (num.startsWith("0")){
            num = num.substring(1,num.length());
        }
        return num;
    }

    
    public static String encryptToStartZero(String original, baseType baseType) {
        if (baseType == null) {
            throw new RuntimeException("进制转换类型不能为null");
        }
        Long length = baseType.getbaseLength();
        int a = 0;
        while (original.startsWith("0")){
            original = original.substring(1,original.length());
            a++;
        }
        long value = Long.valueOf(original).longValue();
        StringBuilder builder = new StringBuilder();
        int i = 0;
        while (value != 0) {
            long t = value % length;
            if (t >= 0 && t < 10) {
                builder.append((char) (t + '0'));
            } else {
                builder.append((char) (t + 'A' - 10));
            }
            i++;
            value = value / length;
        }
        String num = builder.reverse().toString();
        while (num.startsWith("0")){
            num = num.substring(1,num.length());
        }
        if(a == 0){
            num = "1"+num;
        }else {
            num = "0"+a+num;
        }
        return num;
    }

    
    public static String encryptToStartZeroToBigInt(String original, baseType baseType) {
        if (baseType == null) {
            throw new RuntimeException("进制转换类型不能为null");
        }
        BigInteger length = BigInteger.valueOf(baseType.getbaseLength());
        int a = 0;
        while (original.startsWith("0")){
            original = original.substring(1,original.length());
            a++;
        }

        BigInteger value = new BigInteger(original);
        StringBuilder builder = new StringBuilder();
        int i = 0;
        while (!value.toString().equals("0")) {
            int t = value.mod(length).intValue();
            if (t >= 0 && t < 10) {
                builder.append((char) (t + '0'));
            } else {
                builder.append((char) (t + 'A' - 10));
            }
            i++;
            value = value.divide(length);
        }
        String num = builder.reverse().toString();
        while (num.startsWith("0")){
            num = num.substring(1,num.length());
        }
        if(a == 0){
            num = "1"+num;
        }else {
            num = "0"+a+num;
        }
        return num;
    }

    
    public static String decrypt(String translation,baseType baseType) {
        Long length = baseType.getbaseLength();
        long result = 0;
        long wei = 1;
        char[] chars = translation.toCharArray();
        for (int i = chars.length - 1; i >= 0; i--) {
            int a = 0;
            switch (chars[i]){
                case 'A': a = 10;break;
                case 'B': a = 11;break;
                case 'C': a = 12;break;
                case 'D': a = 13;break;
                case 'E': a = 14;break;
                case 'F': a = 15;break;
                case 'G': a = 16;break;
                case 'H': a = 17;break;
                case 'I': a = 18;break;
                case 'J': a = 19;break;
                case 'K': a = 20;break;
                case 'L': a = 21;break;
                case 'M': a = 22;break;
                case 'N': a = 23;break;
                case 'O': a = 24;break;
                case 'P': a = 25;break;
                case 'Q': a = 26;break;
                case 'R': a = 27;break;
                case 'S': a = 28;break;
                case 'T': a = 29;break;
                case 'U': a = 30;break;
                case 'V': a = 31;break;
                case 'W': a = 32;break;
                case 'X': a = 33;break;
                case 'Y': a = 34;break;
                case 'Z': a = 35;break;
                default:  a = Integer.valueOf(String.valueOf(chars[i]));break;
            }
            result += a*wei;
            wei*=length;
        }
        return String.valueOf(result);
    }

    
    public static String decryptByBigInt(String translation,baseType baseType) {
        BigInteger length = BigInteger.valueOf(baseType.getbaseLength());
        BigInteger result = new BigInteger("0");
        BigInteger wei = new BigInteger("1");
        char[] chars = translation.toCharArray();
        for (int i = chars.length - 1; i >= 0; i--) {
            long a = 0;
            switch (chars[i]){
                case 'A': a = 10l;break;
                case 'B': a = 11l;break;
                case 'C': a = 12l;break;
                case 'D': a = 13l;break;
                case 'E': a = 14l;break;
                case 'F': a = 15l;break;
                case 'G': a = 16l;break;
                case 'H': a = 17l;break;
                case 'I': a = 18l;break;
                case 'J': a = 19l;break;
                case 'K': a = 20l;break;
                case 'L': a = 21l;break;
                case 'M': a = 22l;break;
                case 'N': a = 23l;break;
                case 'O': a = 24l;break;
                case 'P': a = 25l;break;
                case 'Q': a = 26l;break;
                case 'R': a = 27l;break;
                case 'S': a = 28l;break;
                case 'T': a = 29l;break;
                case 'U': a = 30l;break;
                case 'V': a = 31l;break;
                case 'W': a = 32l;break;
                case 'X': a = 33l;break;
                case 'Y': a = 34l;break;
                case 'Z': a = 35l;break;
                default:  a = Long.valueOf(String.valueOf(chars[i]));break;
            }
            BigInteger multiply = wei.multiply(BigInteger.valueOf(a));
            result = result.add(multiply);
            wei = wei.multiply(length);
        }
        return result.toString();
    }

    
    public static String decryptToStartZero(String translation,baseType baseType) {
        Long length = baseType.getbaseLength();
        long result = 0;
        long wei = 1;
        int a1 = 0;
        if(translation.startsWith("0")){
            char c = translation.charAt(1);
            a1 = Integer.valueOf(String.valueOf(c));
            translation = translation.substring(2,translation.length());
        }else {
            translation = translation.substring(1,translation.length());
        }
        char[] chars = translation.toCharArray();
        for (int i = chars.length - 1; i >= 0; i--) {
            int a = 0;
            switch (chars[i]){
                case 'A': a = 10;break;
                case 'B': a = 11;break;
                case 'C': a = 12;break;
                case 'D': a = 13;break;
                case 'E': a = 14;break;
                case 'F': a = 15;break;
                case 'G': a = 16;break;
                case 'H': a = 17;break;
                case 'I': a = 18;break;
                case 'J': a = 19;break;
                case 'K': a = 20;break;
                case 'L': a = 21;break;
                case 'M': a = 22;break;
                case 'N': a = 23;break;
                case 'O': a = 24;break;
                case 'P': a = 25;break;
                case 'Q': a = 26;break;
                case 'R': a = 27;break;
                case 'S': a = 28;break;
                case 'T': a = 29;break;
                case 'U': a = 30;break;
                case 'V': a = 31;break;
                case 'W': a = 32;break;
                case 'X': a = 33;break;
                case 'Y': a = 34;break;
                case 'Z': a = 35;break;
                default:  a = Integer.valueOf(String.valueOf(chars[i]));break;
            }
            result += a*wei;
            wei*=length;
        }
        if(a1 != 0){
            String suffix = "";
            for (int i = a1; i > 0; i--) {
                suffix+=0;
            }
            return suffix+String.valueOf(result);
        }
        return String.valueOf(result);
    }

    
    public static String decryptToStartZeroByBigInt(String translation,baseType baseType) {
        BigInteger length = BigInteger.valueOf(baseType.getbaseLength());
        BigInteger result = BigInteger.valueOf(0l);
        BigInteger wei = BigInteger.valueOf(1l);
        int a1 = 0;
        if(translation.startsWith("0")){
            char c = translation.charAt(1);
            a1 = Integer.valueOf(String.valueOf(c));
            translation = translation.substring(2,translation.length());
        }else {
            translation = translation.substring(1,translation.length());
        }
        char[] chars = translation.toCharArray();
        for (int i = chars.length - 1; i >= 0; i--) {
            long a = 0;
            switch (chars[i]){
                case 'A': a = 10l;break;
                case 'B': a = 11l;break;
                case 'C': a = 12l;break;
                case 'D': a = 13l;break;
                case 'E': a = 14l;break;
                case 'F': a = 15l;break;
                case 'G': a = 16l;break;
                case 'H': a = 17l;break;
                case 'I': a = 18l;break;
                case 'J': a = 19l;break;
                case 'K': a = 20l;break;
                case 'L': a = 21l;break;
                case 'M': a = 22l;break;
                case 'N': a = 23l;break;
                case 'O': a = 24l;break;
                case 'P': a = 25l;break;
                case 'Q': a = 26l;break;
                case 'R': a = 27l;break;
                case 'S': a = 28l;break;
                case 'T': a = 29l;break;
                case 'U': a = 30l;break;
                case 'V': a = 31l;break;
                case 'W': a = 32l;break;
                case 'X': a = 33l;break;
                case 'Y': a = 34l;break;
                case 'Z': a = 35l;break;
                default:  a = Long.valueOf(String.valueOf(chars[i]));break;
            }
            result = result.add(wei.multiply(BigInteger.valueOf(a)));
            wei = wei.multiply(length);
        }
        if(a1 != 0){
            String suffix = "";
            for (int i = a1; i > 0; i--) {
                suffix+=0;
            }
            return suffix+result.toString();
        }
        return String.valueOf(result);
    }
    
    
    public enum baseType {
        base_11(11L),
        base_12(12L),
        base_13(13L),
        base_14(14L),
        base_15(15L),
        base_16(16L),
        base_17(17L),
        base_18(18L),
        base_19(19L),
        base_20(20L),
        base_21(21L),
        base_22(22L),
        base_23(23L),
        base_24(24L),
        base_25(25L),
        base_26(26L),
        base_27(27L),
        base_28(28L),
        base_29(29L),
        base_30(30L),
        base_31(31L),
        base_32(32L),
        base_33(33L),
        base_34(34L),
        base_35(35L);
        private Long baseLength;

        public Long getbaseLength() {
            return baseLength;
        }

        public void setbaseLength(Long baseLength) {
            baseLength = baseLength;
        }

        baseType(Long baseLength) {
            this.baseLength = baseLength;
        }
    }
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/318715.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号