java八进制转十六进制_java-十进制、八进制、十六进制数互相转换
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-十进制、八进制、十六进制数互相转换的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 在Word2003中使用"Web版式"视
- 下一篇: java的正则表达式 CPU_小心踩雷!