基于Java的16进制数与2进制数互相转化方法.docx
《基于Java的16进制数与2进制数互相转化方法.docx》由会员分享,可在线阅读,更多相关《基于Java的16进制数与2进制数互相转化方法.docx(7页珍藏版)》请在冰豆网上搜索。
![基于Java的16进制数与2进制数互相转化方法.docx](https://file1.bdocx.com/fileroot1/2022-12/1/ac9b3d59-b6ee-4765-966f-8a3799b0f2ff/ac9b3d59-b6ee-4765-966f-8a3799b0f2ff1.gif)
基于Java的16进制数与2进制数互相转化方法
基于Java的16进制数与2进制数互相转化方法
//十六进制数转二进制数
importjava.util.Scanner;
publicclassH_to_B{
staticvoidHtoB_fun(Stringn){
char[]ch=n.toCharArray();
charstr;
Strings="";
intp=0;
for(inti=0;istr=ch[i];
if(str>='0'&&str<='9'){
Stringst=Character.toString(str);//字符转字符串
p=Integer.valueOf(st).intValue();//字符串转整型
}
else{
if(str=='A'){str=10;}
if(str=='B'){str=11;}
if(str=='C'){str=12;}
if(str=='D'){str=13;}
if(str=='E'){str=14;}
if(str=='F'){str=15;}
if(str=='.'){str=16;}
p=(int)str;
}
switch(p){
case0:
s+="0000";
break;
case1:
s+="0001";
break;
case2:
s+="0010";
break;
case3:
s+="0011";
break;
case4:
s+="0100";
break;
case5:
s+="0101";
break;
case6:
s+="0110";
break;
case7:
s+="0111";
break;
case8:
s+="1000";
break;
case9:
s+="1001";
break;
case10:
s+="1010";
break;
case11:
s+="1011";
break;
case12:
s+="1100";
break;
case13:
intjudge=4-(str.length()%4);//前面该补judge个0
if(judge!
=0&&judge!
=4){//当str.length()%4为0时,judge为4,所以要加judge!
=4这个条件
for(inti=1;i<=judge;i++){
str="0"+str;
}
}
}
char[]ch=str.toCharArray();
int[]a=newint[str.length()];
for(inti=0;iStringst=Character.toString(ch[i]);//把字符转换为字符串
a[i]=Integer.valueOf(st).intValue();//再把字符串转换为整型
//System.out.print(a[i]);//用来测试是否在前面补零
}
for(inti=1;i<=str.length();i++){
if(i==wei&&wei!
=0){s+=".";}
if(i%4==0){
c=a[i-1]*1+a[i-2]*2+a[i-3]*4+a[i-4]*8;
if(c<10){
intb=a[i-1]*1+a[i-2]*2+a[i-3]*4+a[i-4]*8;
s+=b+"";
}
if(c>=10){
switch(c){
case10:
s+="A";
break;
case11:
s+="B";
break;
case12:
s+="C";
break;
case13:
s+="D";
break;
case14:
s+="E";
break;
case15:
s+="F";
break;
}
}
}
}
System.out.println("结果为十六进制数:
"+s);
}
publicstaticvoidmain(String[]args){
longstartTime=System.currentTimeMillis();
Scannersc=newScanner(System.in);
System.out.println("请输入一串二进制数字:
");
Stringstr=sc.nextLine();
//Stringstr="101001011011111101010001";
BtoH_fun(str);
longendTime=System.currentTimeMillis();
longusedTime=endTime-startTime;
System.out.println("程序执行所用时间:
"+usedTime+"毫秒!
");
}
}