public class JZTurn {

public static void main(String[] args) {

int num2 = 1314521;

System.out.println("十进制数:"+num2);

System.out.println("十进制转换二进制:"+turn2(num2));

System.out.println("十进制转换八进制:"+turn8(num2));

System.out.println("十进制转换十六进制:"+turn16(num2));

//2-> 8

System.out.println("二进制转换八进制:"+twoTurnEight(turn2(num2)));

System.out.println("八进制转换二进制:"+eightTurnTwo(turn8(num2)));

System.out.println("八进制转换十六进制:"+eightTurnSixteen(turn8(num2)));

//2->16

System.out.println("二进制转换十六进制:"+twoTurnSixteen(turn2(num2)));

}

/**

* 10进制转二进制

*/

public static String turn2(int num){

String shortTimeNum = "";

int remainder = 0;

/**

* 模拟短除法

*/

while(num >= 1){

remainder = num % 2;

num = num / 2;

shortTimeNum = remainder + shortTimeNum;

}

return shortTimeNum;

}

/**

* 10进制转8进制

*/

public static String turn8(int num){

String shortTimeNum = "";

int remainder = 0;

/**

* 模拟短除法

*/

while(num >= 1){

remainder = num % 8;

num = num / 8;

shortTimeNum = remainder + shortTimeNum;

}

return shortTimeNum;

}

/**

* 10进制转16进制

* @return

*/

public static String turn16(int num){

String shortTimeNum = "";

int remainder = 0;

String tempStr = "";

/**

* 模拟短除法

*/

while(num >= 1){

remainder = num % 16;

tempStr = getOtherNum(remainder);

num = num / 16;

shortTimeNum = tempStr + shortTimeNum;

}

return shortTimeNum;

}

/**

* 2进制转换8进制

* 概念说明:这里转换的是整数,从右向左三位一组分别乘以2的零次方,2的一次方,2的2次方

* 然后把每组中的数相加,再把各组从左向右拼接到一起

* @param strNum2

*/

public static String twoTurnEight(String strNum2){

String resultNum = "";

int remainder = strNum2.length() % 3;

//补位 三位一组,最后一组位数不够用0补充

switch(remainder){

case 1:

strNum2 = "00"+strNum2;

break;

case 2:

strNum2 = "0"+strNum2;

break;

}

int index = strNum2.length()-1;

int tempNum1 = 0;

int tempNum2 = 0;

int tempNum3 = 0;

while(index>=1){

index -- ;

if(index % 3 == 0){

//每个数为一组

tempNum1 = Integer.parseInt(strNum2.substring(index, index+1));

tempNum2 = Integer.parseInt(strNum2.substring(index+1, index+2));

tempNum3 = Integer.parseInt(strNum2.substring(index+2, index+3));

resultNum = tempNum3*1+tempNum2*2+tempNum1*4+resultNum;

}

}

return resultNum;

}

/**

* 八进制转换二进制

* @param eightNum

* @return

*/

public static String eightTurnTwo(String eightNum){

String twoNum = "";

int index = eightNum.length()-1;

String tempNum = "";

while(index>=0){

tempNum = turn2(Integer.parseInt(eightNum.substring(index, index+1))) ;

//补位,在转换8进制时是每三为二进制数为一组,转换回二进制时位数也需要是三位,不够用零补

switch (tempNum.length()) {

case 1:

tempNum = "00"+tempNum;

break;

case 2:

tempNum = "0"+tempNum;

break;

}

twoNum = tempNum + twoNum;

index--;

}

return twoNum;

}

/**

* 2进制转换16进制

* 概念说明:这里转换的是整数,从右向左四位一组分别乘以2的零次方,2的一次方,2的2次方,2的3次方,

* 然后相加把每组最终的得数一次从左向右拼到一起,若其中一组的和大于9,按照对应关系转换后再把每组的结果拼接到一起

* @param strNum2

*/

public static String twoTurnSixteen(String strNum2){

String resultNum = "";

int remainder = strNum2.length() % 4;

//补位,四位一组,最后一组位数不够用0补充

switch(remainder){

case 1:

strNum2 = "000"+strNum2;

break;

case 2:

strNum2 = "00"+strNum2;

break;

case 3:

strNum2 = "0"+strNum2;

break;

}

int index = strNum2.length()-1;

int tempNum1 = 0;

int tempNum2 = 0;

int tempNum3 = 0;

int tempNum4 = 0;

int tempNum5 = 0;

while(index>=1){

index -- ;

if(index % 4 == 0){

//每个数为一组

tempNum1 = Integer.parseInt(strNum2.substring(index, index+1));

tempNum2 = Integer.parseInt(strNum2.substring(index+1, index+2));

tempNum3 = Integer.parseInt(strNum2.substring(index+2, index+3));

tempNum4 = Integer.parseInt(strNum2.substring(index+3, index+4));

tempNum5 = tempNum4*1 + tempNum3*2+tempNum2*4+tempNum1*8;

resultNum = getOtherNum(tempNum5) +resultNum;

}

}

return resultNum;

}

/**

* 8进制转换16进制

* @param strNum2

*/

public static String eightTurnSixteen(String strNum2){

return twoTurnSixteen(eightTurnTwo(strNum2));

}

/**

* 16进制转换中的特殊处理,需要把大于9的数字转换成字母

* @param tempNum

* @return

*/

public static String getOtherNum(int tempNum){

String tempStr = "";

if(tempNum > 9){

switch(tempNum){

case 10:

tempStr = "A";

break ;

case 11:

tempStr = "B";

break;

case 12:

tempStr = "C";

break;

case 13:

tempStr = "D";

break;

case 14:

tempStr = "E";

break;

case 15:

tempStr = "F";

break;

}

}else{

tempStr = String.valueOf(tempNum);

}

return tempStr;

}

}

java八进制转十六进制_java-十进制、八进制、十六进制数互相转换相关推荐

  1. 二进制、八进制、十六进制和十进制的相互转换,原码反码补码计算以及Java中数字的存储

    1. Java中数字默认是十进制,二进制.八进制以及十六进制的表示如下 2. 二进制.八进制.十六进制和十进制的相互转换 2.1 为了不累赘描述,本文以百度的二进制小数转换为十进制小数为例,如下图 2 ...

  2. 蓝桥杯基础练习合集一(C语言) 1.A+B问题2.数列排序3.十六进制转八进制4.十六进制转十进制5.十进制转十六进制

    目录 1.A+B问题 2.数列排序 3.十六进制转八进制 4.十六进制转十进制 5.十进制转十六进制 1.A+B问题 问题描述 输入A.B,输出A+B. 输入格式 输入的第一行包括两个整数,由空格分隔 ...

  3. C语言【程序48】题目:八进制转换为十进制、二进制转换为十进制、十进制转换为二进制 、十进制转换为八进制、十六进制转换为十进制、十进制转换为十六进制

    基本思想: 八进制转十进制,二进制转十进制都一样的道理 八进制 --> 十进制 //[程序48] //题目:八进制-->十进制 #include<stdio.h> #inclu ...

  4. 将十进制数对应的八进制、十六进制、十进制数输出

    题目描述 输入一个十进制数,转换为对应的八进制.十六进制.十进制数输出 输入 输入一个十进制数 输出 输出该十进制数对应的八进制.十六进制.十进制数 样例输入 10 样例输出 oct:12 hex:a ...

  5. python中二进制转化为十进制_将二进制、八进制、十六进制转换为十进制

    学习视频 9节课征服「字符编码」-1-字符.字符集.字符编号与字符编码(基础课)-周华健的在线视频教程​edu.csdn.net 二进制.八进制和十六进制向十进制转换都非常容易,就是"按权相 ...

  6. 进制转换:二进制、八进制、十六进制、十进制之间的转换

    进制转换:二进制.八进制.十六进制.十进制之间的转换 不同进制之间的转换在编程中经常会用到,尤其是C语言. 将二进制.八进制.十六进制转换为十进制 二进制.八进制和十六进制向十进制转换都非常容易,就是 ...

  7. c语言中十进制转化二进制八进制十六进制,进制转换:二进制、八进制、十六进制、十进制之间的转换...

    对于基础薄弱的读者,本节的内容可能略显晦涩和枯燥,如果觉得吃力,可以暂时跳过,用到的时候再来阅读.但是本节所讲的内容是学习编程的基础,是程序员的基本功,即使现在不学,迟早也要回来学. 上节我们对二进制 ...

  8. 将二进制、八进制、十六进制转换为十进制

    上节我们对二进制.八进制和十六进制进行了说明,本节重点讲解不同进制之间的转换,这在编程中经常会用到,尤其是C语言. 将二进制.八进制.十六进制转换为十进制 二进制.八进制和十六进制向十进制转换都非常容 ...

  9. 十进制小数化为二进制小数的方法是什么_10、进制转换:二进制、八进制、十六进制、十进制之间的转换...

    上节我们对二进制.八进制和十六进制进行了说明,本节重点讲解不同进制之间的转换,这在编程中经常会用到,尤其是C语言. 将二进制.八进制.十六进制转换为十进制 二进制.八进制和十六进制向十进制转换都非常容 ...

  10. 十六进制转八进制(十六进制转十进制,十进制转八进制)

    ##刚开始学习C的小白,2022-1-11第一篇,分享自己写的十六转八进制,欢迎各位指导!!![可爱皱眉][可爱皱眉][可爱皱眉][可爱皱眉][可爱皱眉] 在此程序中,将十六进制转成十进制,再转成八进 ...

最新文章

  1. [JMX一步步来] 1、JMX的Hello World
  2. 判断是不是一个数组?
  3. ESP8266编译脚本之五
  4. pico park无法连接至远程服务器,picopark联机失败怎么办 picopark联机进不去问题解决方法...
  5. 面向对象基础及UML建模语言
  6. CUBA 7的新功能
  7. 嵌套的json ajax,通过jquery或javascript通过AJAX读取嵌套的JSON并输出到表中
  8. java水印图片_JAVA实用案例之图片水印开发
  9. startuml动态模型工具_动态面板模型估计方法简介以及stata应用
  10. 3 PP配置-一般设置-检查计量单位
  11. VMware下ubuntu全屏显示
  12. TripleDES加解密Java、C#、php通用代码
  13. GDAL读取S-57海图数据中文属性值乱码问题解决(续)
  14. inpur标签的各种type
  15. 阿里云大数据ACP专业认证实验之05-MaxCompute内置函数(上)
  16. 高分一号二号PMS数据处理
  17. android app 三星s8 适配问题 和 meta-data 动态修改
  18. [USACO06NOV]玉米田Corn Fields
  19. 22-Mybatis缓存相关设置对一级缓存和二级缓存的影响
  20. Web安全(图片验证码大小可控导致ddos)

热门文章

  1. Jexus~docker与它产生了暖味
  2. Visual Studio Code 1.3终于增加了标签页
  3. 第三篇 Entity Framework Plus 之 Query Cache
  4. html 字符串最后加空格,html space空格符
  5. 如何在web api中使用SignalR
  6. 真正CSDN博客文章一键转载插件(含源码)
  7. 剑指offer之打印链表的倒数第N个节点的值
  8. C和指针之字符串简单实现 strcpy、strcat、strstr函数
  9. Android之网络调试adb tcpip
  10. 【C语言简单说】十一:switch 补