进制转换工具类

package com;import java.math.BigInteger;
import java.util.Arrays;/*** @ClassName BaseConversionUtils* @Author Kochiya* @Date 9:53 2021/10/12* @Description 进制转换类* @Version 1.0**/
public class BaseConversionUtils {/*** 十进制转换指定进制大小进制(11- 20 进制内 闭区间)** @param original 十进制显示的数字字符串 (最大支持long的最大)* @param baseType 转换后对的进制类型* @return*/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;}/*** 十进制转换指定进制大小进制(11- 20 进制内 闭区间)** @param original 十进制显示的数字字符串* @param baseType 转换后对的进制类型* @return*/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;}/*** 十进制转换指定进制大小进制(11- 35 进制内 闭区间) 十进制字符串包括以0开头的编译(转换值在long范围类)** @param original 十进制显示的数字字符串* @param baseType 转换后对的进制类型* @return*/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;}/*** 十进制转换指定进制大小进制(11- 35 进制内 闭区间) 十进制字符串包括以0开头的编译** @param original 十进制显示的数字字符串* @param baseType 转换后对的进制类型* @return*/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;}/*** 进制大小进制(11- 35 进制内 闭区间)转换为10进制 (编译前只支持long的最大值 否则结果会不正确)** @param translation (11- 35 进制内 闭区间)进制显示的数字字符串* @param baseType 需要转换的进制类型* @return*/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);}/*** 进制大小进制(11- 35 进制内 闭区间)转换为10进制** @param translation (11- 35 进制内 闭区间)进制显示的数字字符串* @param baseType 需要转换的进制类型* @return*/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();}/*** 进制大小进制(11- 35 进制内 闭区间)转换为10进制  数字字符串有零开头的情况 (编译前只支持long的最大值 否则结果会不正确)** @param translation (11- 35 进制内 闭区间)进制显示的数字字符串* @param baseType 需要转换的进制类型* @return*/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);}/*** 进制大小进制(11- 35 进制内 闭区间)转换为10进制  数字字符串有零开头的情况** @param translation (11- 35 进制内 闭区间)进制显示的数字字符串* @param baseType 需要转换的进制类型* @return*/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;}}
}

JAVA 进制转换工具相关推荐

  1. Java 进制转换工具类

    /*** 进制转换工具类* @author dell**/ public class HexadecimalUtil {/*** 获得倒序二进制数据* @param hexString* @retur ...

  2. java 进制转换工具_进制转换工具(JAVA)

    /**进制转换工具,支持2-36任意进制间相互转换 */ public class HexConverter { public static String Quotient = null; publi ...

  3. JAVA 进制转换工具类 10进制转16进制 10进制转2进制 16进制转2进制 16进制10进制 2进制转10进制 2进制转16进制

    进制转换的坑: 注意:使用Integer的方法转换出来的2进制字符串 最高位是没有补零的 ,java的Integer类的toBinaryString()方法转换出来的二进制字符串只会保留最高非零位以后 ...

  4. java:实现进制转换工具(附完整源码)

    java:实现进制转换工具 package com.xxq;import java.awt.BorderLayout; import java.awt.EventQueue;import javax. ...

  5. Android开发实用小工具十——进制转换工具

    文章目录 前言 一.效果展示 二.代码 1.样式布局 2.主代码 总结 前言 进制转换工具的开发与实现. 一.效果展示 二.代码 准备工作与我开发的另一个小工具(长度转换工具)所用一致,详情请看我上一 ...

  6. ASCII HEX BIN DIG进制转换工具页

    ASCII  HEX BIN DIG进制转换工具页 http://www.ab126.com/goju/1711.html

  7. JavaScript实现在线进制转换工具网站 -toolfk程序员在线工具网

    本文要推荐的[ToolFk]是一款程序员经常使用的线上免费测试工具箱,ToolFk 特色是专注于程序员日常的开发工具,不用安装任何软件,只要把内容贴上按一个执行按钮,就能获取到想要的内容结果.Tool ...

  8. 在线2-36任意进制转换工具

    在线2-36任意进制转换工具 在线2-36任意进制转换工具 本工具支持将数字从在2-36进制中任意进制间相互转换,只支持整数,纯客户端实时计算. https://tooltt.com/hex/

  9. JavaScript实现在线进制转换工具网站 -toolfk程序员工具网

    本文要推荐的[ToolFk]是一款程序员经常使用的线上免费测试工具箱,ToolFk 特色是专注于程序员日常的开发工具,不用安装任何软件,只要把内容贴上按一个执行按钮,就能获取到想要的内容结果.Tool ...

  10. 通用进制转换工具,可实现进制之间的任意转换

    通用进制转换工具,可实现2进制,8进制,10进制,16进制之间的任意转换 以下是软件截图: 以下是软件下载地址: http://download.csdn.net/source/3371415 转载于 ...

最新文章

  1. 机器学习数据预处理之缺失值:前向填充
  2. jQuery获取和设置元素
  3. Android开源项目第二篇——工具库篇
  4. BZOJ2002 [HNOI2010] 弹飞绵羊
  5. 虚拟机四种网络连接模式比较
  6. 修改结构体中成员的值
  7. python接口编程的好处_python接口自动化测试
  8. ipad iphone开发_如何在iPad或iPhone上使用外部GPS设备
  9. 形式语言与自动机学习心得
  10. 魅族17用鸿蒙系统,发布一年还很香,魅族17升级Flyme 9后太好用了
  11. 怎么给新版edge换皮肤外观? | 怎么给edge添加chrome插件?
  12. AI换脸骗过App,林俊杰和我们都怕
  13. Context上下文到底是个什么东东?
  14. Progress实现进度条效果
  15. 爬虫爬取东方财富网的股票走势图
  16. Nagios和ndo2db系统脚本---for gentoo
  17. Entry name ‘classes.dex‘ collided
  18. 星际文件系统(InterPlanetary File System,缩写IPFS)
  19. arm tcm linux,ARM紧致内存TCM的解释
  20. 零基础的我是这样开始写Python爬虫的(附代码)

热门文章

  1. python算法精解pdf_算法详解(卷1)算法基础 PDF 完整高清版
  2. linux卸载驱动命令,卸载打印机驱动程序 (Linux)
  3. JVM上篇:内存与垃圾回收
  4. win10易升_白嫖性能!Win10系统开启硬件加速GPU调度计划提升显卡性能的方法
  5. SPSS入门教程—对数据进行去重操作的相关方法
  6. 手机APP项目测试点总结
  7. 挂茶馆热血传奇私服辅助开发教程
  8. 小程序 轮播图样式设置
  9. 通过代码创建obj格式的三维模型
  10. Manacher (马拉车算法)