本篇博文不讲废话,只上代码,代码中会有注释。因这两天公司项目中需要用到进制转换,所以细作了研究。(其实jdk提供了进制间转换的方法,主要在Integer类中,寻求简便的可以直接用,不过能自己写方法实现也还是不错的)

package com.redxun.utils;import java.util.ArrayList;/*** 16进制转2进制*  十六进制转为十进制* 2进制转为10进制* * 十六个十六进制对应的二进制* 16个十六进制对应的十进制* 2017-12-22* @author long**/
public class BHDConvert {public static void main(String[] args) {// TODO Auto-generated method stub
//      htd("D");//十六进制转为二进制System.out.println(convertHtB("3ABDC4B9"));//十六进制转为十进制System.out.println(convertHtD("3ABDC4B9"));//十进制转为十六进制ArrayList<String> arr=new ArrayList<>();//递归的过程中产生多个中间值,无法直接返回需要的值,所以用链表存储所有的中间值,再取出需要的最终转换后的十六进制System.out.println("十进制转为十六进制为"+convertDtH(985515193,"",arr));//二进制转为十进制System.out.println(convertBtD("01000100010111011100"));arr=new ArrayList<>();//二进制转为十六进制->2-10-16System.out.println(convertDtH(convertBtD("01000100010111011100"),"",arr));//十进制转为二进制10-16-2arr=new ArrayList<>();//切记每次要重置链表System.out.println("十进制转为二进制"+convertHtB(convertDtH(985515193,"",arr)));}/*** hexadecimal (394D) to binary(0001 1001 0100 1101)* 十六进制转为二进制* @desc * @author zcl* @date 2019年4月11日*/public static String convertHtB(String h) {String b="";for(int i=0;i<h.length();i++){String o=h.substring(i,i+1);b=b+htb(o);          }return b;}/*** 十六进制转为十进制* @desc * @author zcl* @date 2019年4月11日*/private static int convertHtD(String h) {// TODO Auto-generated method stubdouble d=0;for(int i=0;i<h.length();i++){int o=htd(h.substring(i,i+1));//将十六进制中的单个字符依次转为十进制d=d+o*Math.pow(16, h.length()-i-1);}return (int)d;}/***  十进制转为十六进制* @author zcl* @创建时间: 2019年4月12日上午9:43:57 * @param decimal    待转化的十进制* @param h  递归转换过程中产生的十六进制中间值* @param arr 包含最终转化成的十六进制数和中间值的链表* @return*/private static String convertDtH(int decimal,String h,ArrayList<String> arr) {h=""+h;if(decimal/16>16){//decimal>256
//          System.out.println(decimal);
//          System.out.println("h为"+h);convertDtH(decimal/16,dth(decimal%16)+""+h,arr);//必须对十六进制的每一位执行dth方法,目的是将比如15转为F}else if(decimal>16){//decimal>16
//          System.out.println(decimal);
//          System.out.println("h为"+h);h=dth(decimal/16)+""+dth(decimal%16)+h;//必须对十六进制的每一位执行dth方法,目的是将比如15转为F}arr.add(h);
//      System.out.println("h为"+h);return arr.get(0);}//binary to decimal/*** 二进制转为十进制* @desc * @author zcl* @date 2019年4月11日* @param b* @return*/public static int convertBtD(String b){double d=0;for(int i=0;i<b.length();i++){String t=b.substring(i, i+1);int tt=Integer.parseInt(t);Double g=tt*Math.pow(2,b.length()-i-1);d=d+g;}return (int)d;}/*** 十六个十六进制(0-F)->对应的二进制(0000,1111)* @desc * @author zcl* @date 2019年4月11日* @param h 十六进制(0-F)* @return 对应的二进制(0000,1111)*/public static String htb(String h){String b=null;String hs[]={"0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F"};String bs[]={"0000","0001","0010","0011","0100","0101","0110","0111","1000","1001","1010","1011","1100","1101","1110","1111"};for(int i=0;i<hs.length;i++){if(hs[i].equals(h)){b=bs[i];}}return b;}/*** 16个十六进制(0-F)->对应的十进制(0-15)* @author zcl* @创建时间: 2019年4月12日上午9:46:33 * @param h 十六进制(0-F)* @return 对应的十进制(0-15)*/private static int  htd(String h) {String hs[]={"0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F"};int ds[]={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};int d=0;int i=0;while(i<hs.length){if(h.equals(hs[i])){d=ds[i];}i++;}return d;}/*** 16个十进制(0-15)->对应的十六进制(0-F)* @author zcl* @创建时间: 2019年4月12日上午9:25:31 * @param d 十进制(0-15)* @return 对应的十六进制(0-F)*/private static String  dth(int d) {String hs[]={"0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F"};int ds[]={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};String h="";int i=0;while(i<hs.length){if(d==ds[i]){h=hs[i];}i++;}return h;}
}

欢迎大家访问我的视频网站553影院 和 个人博客网站,视频网站注册并登陆后即可拥有发表评论,记录自己的播放,搜索,登陆记录以及收藏视频等功能。我在553影院等你

一篇博文用Java玩转二进制、十进制、十六进制间的转换相关推荐

  1. 二进制,十进制,十六进制

    生活中其实很多地方的计数方法都多少有点不同进制的影子. 比如我们最常用的10进制,其实起源于人有10个指头.如果我们的祖先始终没有摆脱手脚不分的境况,我想我们现在一定是在使用20进制. 至于二进制-- ...

  2. 微型计算机有多少进制,微型计算机原理二进制十进制十六进制.doc

    微型计算机原理二进制十进制十六进制 1:微处理器和微型计算机的发展 自1946年世界上第一台计算机问世以来,计算机科学与技术得到了飞速的发展,短短50多年时间,已经经历了电子管.晶体管.集成电路.超大 ...

  3. 二进制十进制十六进制转换_二进制数制到十进制数制的转换

    二进制十进制十六进制转换 Prerequisite: Number systems 先决条件: 数字系统 To convert binary number to its respective deci ...

  4. php 十六进制变中文版,php 汉字转化成 二进制 十进制 十六进制 数目字

    php 汉字转化成 二进制 十进制 十六进制 数字 /** * 把一个汉字转为unicode的通用函数,不依赖任何库,和别的自定义函数,但有条件 * 条件:本文件以及函数的输入参数应该用utf-8编码 ...

  5. java、计算机进制转换,二进制 十进制 十六进制 的进制等等!

    2进制CPU使用,8进制很少见,10进制适合人类使用,16进制适合编译器和底层程序员使用,希望对你有所帮助! 以下文章是自己从别的地方复制粘贴过来, 总结了一下. 虽然看着有点乱, 但是想学 ,就能看 ...

  6. java 进制转换,二进制 十进制 十六进制 正数 负数的进制等等!

    2进制CPU使用,8进制很少见,10进制适合人类使用,16进制适合编译器和底层程序员使用,希望对你有所帮助! 以下文章是自己从别的地方复制粘贴过来, 总结了一下. 虽然看着有点乱, 但是想学 ,就能看 ...

  7. 【iOS】二进制十进制十六进制转换器

    还是那句话,没有第一时间在网上找到想要的参考代码,就自己动手做了一个. 总感觉进制转换应该有系统方法,哪位大神若知道还请不吝赐教. // // MainViewController.m // Comp ...

  8. postgreSql按位运算、二进制十进制十六进制的表法和转换

    -- postgre 按位运算符 以及结果 注释的后面为结果SELECT 1|2 ; -- 3SELECT 1&2 ; -- 0SELECT 1*2 ; -- 2SELECT 4>> ...

  9. QT 进制转换小工具 二进制/十进制/十六进制/浮点数转换

    野生小菜鸟一只,程序效果如下,希望大家多多支持. 1. 按table切换LineEdit: 2. 输入要计算的数据后,按回车执行,计算后的数据会显示在同一行的另一个控件中. 3. LIneEdit内加 ...

最新文章

  1. 做一个成功的网络项目的详细推广流程
  2. 居民信息管理系统java_基于jsp的社区住户信息管理系统-JavaEE实现社区住户信息管理系统 - java项目源码...
  3. Random Forest(sklearn参数详解)
  4. jpa加密_使用JPA侦听器的数据库加密
  5. rman全备时,配置项如何设置?
  6. Android 多选列表
  7. ES6知识点汇总(全)
  8. 多元相关性分析_电子健康素养与中青年脑卒中患者健康行为的相关性分析
  9. vCenter如何逃离Windows的坑(转)
  10. Android线程与ANR
  11. mysql5.5java安装_配置非安装版的mysql 5.5
  12. pytorch_pix2pix之argparse
  13. 关于LINUX输入法候选框光标跟随的代码的一个网页
  14. ACDsee_14中文许可证秘钥
  15. python代码混淆
  16. excel 中出现了 1048576删不掉的解决方法
  17. 阿里云国际版注册成功后添加支付方式
  18. Java面试题(一) 题目:输入某年某月某日,判断这一天是这一年的第几天
  19. RSA加密中PEM、DER的编解码问题
  20. 饿了么交易系统 5 年演化史

热门文章

  1. 3D,点云可视化技术
  2. 异步执行顺序——宏任务与微任务不同环境下的出队规则
  3. php安装rrdtool扩展,rrdtool的安装
  4. WAIC 2021 | 共话AI开源开放之道,赢取惊喜好礼!
  5. 高版本Chrome浏览器多路(25路)同时播放海康威视、大华摄像头RTSP流视频流方案
  6. java中regex参考
  7. 如何优雅地给妹子优化电脑?(技巧篇)
  8. 接口自动化测试--入门
  9. 校验码——奇偶校验码详解,码距,例题
  10. centos7 redis集群搭建