java 16進制轉化爲二進制 二進制在反轉後再得到16進制

package com.zeng;


import java.util.Scanner;


/**

* 16進制轉化爲二進制

* 二進制在反轉後再得到16進制

* 如1111 二進制0001000100010001,反轉1000100010001000

* 得到16進制 8888

*/

public class Main04 {


/**

* @param args

*/

public static void main(String[] args) {

try{

Scanner in=new Scanner(System.in);

String str=in.next();

System.out.println(get(str));

}catch(Exception e){

e.printStackTrace();

}

}

public static String get(String str){

String ss="0123456789ABCDEF";

char[] ch=str.toCharArray();

for(int i=0;i<ch.length;i++){

if(!ss.contains(String.valueOf(ch[i]))){

return "輸入的16進制是錯誤的";

}

}

int x=Integer.valueOf(str,16);//16進制轉化爲10進制

String y=Integer.toBinaryString(x);//將x轉化爲二進制

StringBuffer sb=new StringBuffer();

if(y.length()%4!=0){

//把0補齊

for(int i=0;i<4-y.length()%4;i++){

sb.append("0");

}

}

sb.append(y);

sb.reverse();//對二進制進行反轉

int z=Integer.valueOf(sb.toString(),2);//2進制轉化爲10進制

String result=Integer.toHexString(z);

return result;

}


}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章