int num=66;
System.out.println(Integer.toBinaryString(num));
System.out.println(Integer.toHexString(num));
int bits=0;
int temp=num;
while(temp>0){
temp/=16;
bits++;
System.out.println(temp);
}
temp = num;
String[] result= new String[bits];
for(int i=0;i<bits;i++){
result[i] = ((temp%16)>9?(char)(temp%16-10+'A')+"":temp%16+"");
temp/=16;
}
for(int i=0;i<bits;i++){
System.out.print(result[bits-1-i]);
}
其实是10进制到16进制的转换
1.首先确定转换成16进制后有几位
2.根据位数创建String数组
3.算出每一位对应的16进制表达,存入数组
4.一次输出数组元素
result[i] = ((temp%16)>9?(char)(temp%16-10+'A')+"":temp%16+"");
核心是这行代码,用到知识点:
>三目运算符
>基本数据类型的自动转换和强制转换char->int,int->char
>String类型与基本数据类型用“+”连接时可以自动转换成String类
>num/16等价于num>>>4
>num%16等价于num&15