我的编程空间,编程开发者的网络收藏夹
学习永远不晚

怎么使用Java实现进制转换工具类

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

怎么使用Java实现进制转换工具类

本文小编为大家详细介绍“怎么使用Java实现进制转换工具类”,内容详细,步骤清晰,细节处理妥当,希望这篇“怎么使用Java实现进制转换工具类”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

    原理

    低进制转换到高进制的时候可能会减少位数,例如二进制是满二进一,十进制是满十进一。

    二进制:101001101

    • 转换为对应的四进制为:11031

    • 转换为对应的八进制为:515

    • 转换为对应的十进制为:333

    • 转换为对应的十六进制为:14d

    • 转换为对应的三十二进制为:ad

    我们平常用的都是十进制的数值,就以十进制来讲解下转换方法。

    十进制A转换为N进制R

    A除以N,商数为S1,余数为Y1;

    将S1除以N,商数为S2,余数为Y2;

    将S2除以N,商数为S3,余数为Y3;

    循环n次直到商数为0,余数为Yn(Yn < N,n为下标,代表循环次数);

    将余数Yn作为下标取到对应的N进制的值Rn;

    Rn,Rn-1,...,R2,R1拼接起来就得到N进制数R

    用以上方法,如果是转换为十六进制,我们带入看下结果

    十六进制值为0123456789ABCDEFA = 812, N = 16

    812除以16,商数为50,余数为12(对应十六进制数:C);

    将50除以16,商数为3,余数为2(对应十六进制数:2);

    将3除以16,商数为0,余数为3(对应十六进制数:3);

    所以R = 32C

    N进制R转换为十进制A

    假设R有三位数 R2R1R0,从右到左开始处理数据

    S0=R0&lowast;N0

    S1=R1&lowast;N1

    S2=R2&lowast;N2

    A=S0+S1+S2

    带入实际数字实践一下十六进制8F1转换过程

    S0=1&lowast;160 = 1 * 1 = 1

    S1=F&lowast;161 = F + 16 = 15 * 16 = 240

    S2=8&lowast;162 = 8 * 256 = 2048

    A=1+240+2048=2289

    应用

    前面以十进制和十六进制转换举例是为了更好帮助大家理解转换的方式,在应用的过程中我们会发现十进制转十六进制并不能减少很多数字的位数,那么我们就可以使用三十二进制,甚至是六十二进制。

    六十二进制转换工具类实现:

    import java.util.*;public class Main {  // 将字符集打乱就会带有一点加密效果  private static final String chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";   private static final int scale = 62;   public static void main(String []args) {        Long source1 = 121231313213123L;        String source2 = "IAvzjI19";        System.out.println(source1 + " encode -> " + encode(source1, chars));        System.out.println(source2 + " decode -> " + decode(source2, chars));   }       public static String encode(long num, String chars) {        StringBuilder sb = new StringBuilder();        int remainder;        while (num > scale - 1) {            remainder = Long.valueOf(num % scale).intValue();            sb.append(chars.charAt(remainder));            num = num / scale;        }        sb.append(chars.charAt(Long.valueOf(num).intValue()));        return sb.reverse().toString();    }        public static long decode(String str, String chars) {        long num = 0;        int index;        for (int i = 0; i < str.length(); i++) {            index = chars.indexOf(str.charAt(i));            num += (long) (index * (Math.pow(scale, str.length() - i - 1)));        }        return num;    }}

    延伸

    在进制转换的过程中,我们可以看到对应的进制有字符集,例如:十六进制字符集为0123456789ABCDEF,在转换后得到的值假设为12,对应的就是字符集的下标位置(下标从0开始算)为12的值C。那么低进制转高进制除了缩减位数外,我们还可以打乱字符集,获取到的值别人就不容易轻易的猜到实际值,有一点加密的效果。将十六进制字符集打乱为37AF126BCDE95480,那么12对应的值就是5,按常规字符集推算原本的值就会得到错误值。

    还有其他问题要注意,字符集确定后编码了一些数据后,如果在修改字符集就会导致已有数据再解码的时候出错,无法解码得到正确的数据,所以不要轻易修改字符集。修改了字符集要做旧数据处理,或者编码的时候加上字符集版本号,然后在解码的时候根据版本号对应的字符集解码。

    读到这里,这篇“怎么使用Java实现进制转换工具类”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注编程网行业资讯频道。

    免责声明:

    ① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

    ② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

    怎么使用Java实现进制转换工具类

    下载Word文档到电脑,方便收藏和打印~

    下载Word文档

    猜你喜欢

    怎么使用Java实现进制转换工具类

    本文小编为大家详细介绍“怎么使用Java实现进制转换工具类”,内容详细,步骤清晰,细节处理妥当,希望这篇“怎么使用Java实现进制转换工具类”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。原理低进制转换到高进制的时
    2023-07-05

    怎么使用java进制转换工具类实现减少参数长度

    这篇“怎么使用java进制转换工具类实现减少参数长度”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“怎么使用java进制转换工
    2023-07-05

    基于Java如何实现进制转换工具类

    这篇文章主要介绍了基于Java如何实现进制转换工具类的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇基于Java如何实现进制转换工具类文章都会有所收获,下面我们一起来看看吧。背景最近有个发送短信的功能,需要在短信
    2023-07-05

    java进制转换工具类实现减少参数长度

    这篇文章主要为大家介绍了java进制转换工具类实现减少参数长度示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-02-22

    基于Java实现进制转换工具类的示例代码

    这篇文章主要为大家详细介绍了如何基于Java实现进制转换工具类,从而实现减少参数长度的效果,文中的示例代码讲解详细,需要的可以参考一下
    2023-02-19

    怎么用Python实现进制转换

    这篇文章主要讲解了“怎么用Python实现进制转换”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么用Python实现进制转换”吧!Python 实现进制转换一、导言导语:在计算机进行数据交
    2023-06-02

    如何使用Python制作一个多进制转换工具

    小编给大家分享一下如何使用Python制作一个多进制转换工具,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!前言学习资料下载链接 提取码:tha8 进制转换计算工
    2023-06-29

    如何在java中使用DateUtils工具类对时间进行转换

    本文章向大家介绍如何在java中使用DateUtils工具类对时间进行转换,主要包括如何在java中使用DateUtils工具类对时间进行转换的使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。J
    2023-05-30

    C#怎么实现进制转换

    今天小编给大家分享一下C#怎么实现进制转换的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。十进制整数与其他进制的字符串之间的转
    2023-06-30

    Python怎么实现进制转换

    这篇文章主要介绍“Python怎么实现进制转换”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Python怎么实现进制转换”文章能帮助大家解决问题。使用int()转换int()类可将数字或字符串转换为
    2023-06-28

    怎么使用Qt+GDAL库实现制作经纬度坐标转换工具

    今天小编给大家分享一下怎么使用Qt+GDAL库实现制作经纬度坐标转换工具的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。1、功
    2023-07-06

    Map与JavaBean相互转换的工具类怎么使用

    今天小编给大家分享一下Map与JavaBean相互转换的工具类怎么使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。使用范围
    2023-06-29

    mybatis-plus分页类型转换工具类怎么用

    本文小编为大家详细介绍“mybatis-plus分页类型转换工具类怎么用”,内容详细,步骤清晰,细节处理妥当,希望这篇“mybatis-plus分页类型转换工具类怎么用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧
    2023-06-29

    php怎么实现八进制转换十六进制

    php实现八进制转换十六进制的方法:1、创建一个PHP示例文件;2、通过“base_convert($oct,8,16);”方法把八进制数转换为十六进制数即可。
    2015-06-03

    Java工具类RelativeDateFormat怎么使用

    要使用Java工具类RelativeDateFormat,您可以按照以下步骤进行操作:1. 下载RelativeDateFormat.java文件,或者复制其代码到您的Java项目中。2. 在您的Java类中,导入RelativeDateF
    2023-10-20

    在java中怎么对数据类型进行进制转换

    在java中怎么对数据类型进行进制转换?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。在java中Int 类型的变量占 4个字节Long 类型的变量占8个字节一个程序就是一个
    2023-05-31

    python强制类型转换怎么实现

    在Python中,可以使用内置的几个函数来实现强制类型转换,具体取决于要转换的数据类型。以下是一些常用的类型转换函数:1. int():将一个对象转换为整数类型。例如,int(3.14)将返回3。2. float():将一个对象转换为浮点数
    2023-10-19

    编程热搜

    • Python 学习之路 - Python
      一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
      Python 学习之路 - Python
    • chatgpt的中文全称是什么
      chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
      chatgpt的中文全称是什么
    • C/C++中extern函数使用详解
    • C/C++可变参数的使用
      可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
      C/C++可变参数的使用
    • css样式文件该放在哪里
    • php中数组下标必须是连续的吗
    • Python 3 教程
      Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
      Python 3 教程
    • Python pip包管理
      一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
      Python pip包管理
    • ubuntu如何重新编译内核
    • 改善Java代码之慎用java动态编译

    目录