您的位置 首页 java

小猿圈分享-java-十进制、八进制、十六进制数互相转换

给大家分享一个可以节约我们时间的小程序,十进制、 八进制 、十六进制的互相转换,记得收藏哦。

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进制转二进制

* @param num

* @return

*/

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进制

* @param num

* @return

*/

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进制

* @param num

* @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;

}

}

输出结果:

十进制数:1314521

十进制转换二进制:101000000111011011001

十进制转换八进制:5007331

十进制转换十六进制:140ED9

二进制转换八进制:5007331

八进制转换二进制:101111011011001

八进制转换十六进制:5ED9

二进制转换十六进制:140ED9

文章来源:智云一二三科技

文章标题:小猿圈分享-java-十进制、八进制、十六进制数互相转换

文章地址:https://www.zhihuclub.com/184308.shtml

关于作者: 智云科技

热门文章

网站地图