iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >基于Java实现进制转换工具类的示例代码
  • 345
分享到

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

Java进制转换工具类Java进制转换 2023-02-19 15:02:33 345人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

目录背景原理十进制A转换为N进制RN进制R转换为十进制A应用延伸背景 最近有个发送短信的功能,需要在短信中带有详情链接,链接中带有对应信息且要有校验功能,然而短信是按字数收费的,所以

背景

最近有个发送短信的功能,需要在短信中带有详情链接,链接中带有对应信息且要有校验功能,然而短信是按字数收费的,所以链接要尽可能的短。链接中带有数字类型参数,就想到通过低进制转高进制可以减少参数长度。

原理

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

二进制:101001101

  • 转换为对应的四进制为:11031
  • 转换为对应的八进制为:515
  • 转换为对应的十进制为:333
  • 转换为对应的十六进制为:14d
  • 转换为对应的三十二进制为:ad

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

十进制A转换为N进制R

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

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

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

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

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

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

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

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

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

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

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

4、所以R = 32C

N进制R转换为十进制A

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

S0​=R0​∗N0

S1​=R1​∗N1

S2=R2∗N2

A=S0​+S1​+S2

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

S0​=1∗160 = 1 * 1 = 1

S1​=F∗161 = F + 16 = 15 * 16 = 240

S2​=8∗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实现进制转换工具类的示例代码的文章就介绍到这了,更多相关Java进制转换内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: 基于Java实现进制转换工具类的示例代码

本文链接: http://www.lsjlt.com/news/196749.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

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

下载Word文档
猜你喜欢
  • 基于Java实现进制转换工具类的示例代码
    目录背景原理十进制A转换为N进制RN进制R转换为十进制A应用延伸背景 最近有个发送短信的功能,需要在短信中带有详情链接,链接中带有对应信息且要有校验功能,然而短信是按字数收费的,所以...
    99+
    2023-02-19
    Java进制转换工具类 Java进制转换
  • 基于Java如何实现进制转换工具类
    这篇文章主要介绍了基于Java如何实现进制转换工具类的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇基于Java如何实现进制转换工具类文章都会有所收获,下面我们一起来看看吧。背景最近有个发送短信的功能,需要在短信...
    99+
    2023-07-05
  • JS 实现10进制转换36进制的示例代码
    前言 我们在平时写代码的时候偶尔会碰到进制转换的问题,常见的有2进制,8进制,10进制,16进制之间的转换,但是36进制却很少听过,这里就让我们用JS来简单尝试一下36进制的实现吧...
    99+
    2024-04-02
  • 怎么使用Java实现进制转换工具类
    本文小编为大家详细介绍“怎么使用Java实现进制转换工具类”,内容详细,步骤清晰,细节处理妥当,希望这篇“怎么使用Java实现进制转换工具类”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。原理低进制转换到高进制的时...
    99+
    2023-07-05
  • 基于Python制作一个多进制转换工具
    目录前言主要步骤完整代码前言 学习资料下载链接 提取码:9d4g  进制转换计算工具含源文件 主要步骤 导入模块 import tkinter from tki...
    99+
    2024-04-02
  • 基于Python实现千图成像工具的示例代码
    目录前置GUI制作GUI界面设计逻辑设计图片处理修改底图大小修改组图大小计算图片填充次数组图合成图片合成GUI打包千图成像也就是用N张图片组成一张图片的效果。制作方法有很多的,最常见...
    99+
    2024-04-02
  • java进制转换工具类实现减少参数长度
    目录背景原理十进制A转换为N进制RN进制R转换为十进制A应用延伸背景 最近有个发送短信的功能,需要在短信中带有详情链接,链接中带有对应信息且要有校验功能,然而短信是按字数收费的,所...
    99+
    2023-02-22
    java进制转换减少参数长度 java进制转换工具类
  • C语言实现常见进制转换的示例代码
    目录前言一、十进制数转换为二进制数、八进制数二、十进制转换为十六进制三、二进制数、八进制数转换为十进制数四、十六进制数转换为十进制数前言 生活中最常见的进制是十进制,而有一类编程题会...
    99+
    2023-05-14
    C语言实现进制转换 C语言进制转换 C语言 进制
  • python实现进制转化的示例代码
    做题思路 (1)掌握十进制转化为其他进制的方法 (2)分析和解决如何将整数和小数分离,以及他们的存储方式。(3)如何设计python函数去实现它们 (4)了解辗转相除法和列表如何运用...
    99+
    2024-04-02
  • 基于Java实现扫码登录的示例代码
    目录基本介绍原理解析1. 身份认证机制2. 流程概述代码实现1. 环境准备2. 主要依赖3. 生成二维码4. 扫描二维码5. 确认登录6. PC 端轮询7. 拦截器配置效果演示1. ...
    99+
    2024-04-02
  • 基于Flutter实现转场动效的示例代码
    目录前言CupertinoFullscreenDialogTransitionCupertinoPageTransitionDecoratedBoxTransitionFadeTra...
    99+
    2024-04-02
  • java实现视频转码工具类
    废话不多说,直接上代码: 这是转码工具类: package com.gcsoft.pyas.sysbase.utils; import com.gcsoft.pyas.AppProp...
    99+
    2024-04-02
  • 怎么使用java进制转换工具类实现减少参数长度
    这篇“怎么使用java进制转换工具类实现减少参数长度”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“怎么使用java进制转换工...
    99+
    2023-07-05
  • python常见进制转换方法示例代码
    目录1. 标准进制转换2. 任意进制间的转换补充总结1. 标准进制转换 其中比较常用到的是python的内置函数进行进制的转换,一般使用内置函数进行转换的时候是先将控制台输入的字符串...
    99+
    2023-05-18
    python 进制转换 python如何进制转换 python中的进制转换
  • Java基于IDEA实现http编程的示例代码
    http开发前言之为什么要有应用层 我们已经学过TCP/IP , 已经知道目前数据能从客户端进程经过路径选择跨网络传送到服务器端进程 [ IP+Port ],可是,仅仅把数据从A点传...
    99+
    2024-04-02
  • 基于PyQt5实现图转文功能(示例代码)
    目录一、界面PicZ.ui可参考之前的文章如何实现,程序代码如下:二、main.py实现主要功能程序如下:三、最后在主程序中加入以上子程序。四、总结PyQt是Qt框架的Python语...
    99+
    2024-04-02
  • 基于Python实现文件分类器的示例代码
    本文实现文件分类器的目的主要是为了将办公过程中产生的各种格式的文件完成整理。 通过自定义需要整理的文件目录,将该目录下面的全部文件按照文件格式完成分类操作。 实现逻辑使用的pyth...
    99+
    2023-05-14
    Python实现文件分类器 Python文件分类器 Python文件分类
  • Java ClassLoader虚拟类实现代码热替换的示例代码
    目录总结ClassLoader 虚拟类方法实现代码热替换实现改进思考总结 类加载器是负责加载类的对象。类ClassLoader是一个抽象类。给定类的全限定类名,类加载器应尝试查找或生...
    99+
    2024-04-02
  • 基于Python编写微信清理工具的示例代码
    目录主要功能运行环境核心代码完整代码前几天网上找了一款 PC 端微信自动清理工具,用了一下,电脑释放了 30GB 的存储空间,而且不会删除文字的聊天记录,很好用,感觉很多人都用得到,...
    99+
    2024-04-02
  • Java常用工具类汇总 附示例代码
    一、FileUtils private static void fileUtilsTest() { try { //读取文件内容 Stri...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作