题目
如何求一个0~255范围内的整数的十六进制值,例如60的十六进制表示形式3C
方法一:自动实现
String str1 = Integer.toBinaryString(60);
String str2 = Integer.toHexString(60);
方法二:手动实现
public static void main(String[] args) {
int i1 = 60; //二进制:0011 1100
int i2 = i1&15; //(1)
String j = (i2 > 9)? (char)(i2-10 + 'A')+"" : i2+""; //(2)
int temp = i1 >>> 4;
i2 = temp & 15; //(3)
String k = (i2 > 9)? (char)(i2-10 + 'A')+"" : i2+"";
System.out.println(k+""+j);
}
注释(与代码对应):
(1)15的二进制表示为1111,与 i1 “&” 之后可以得到 i1 用二进制表示时的最后面四位即1100表示的数值12
(2)判断 i2 大小,用对应的十六进制值表示
(3)i1 无符号右移4位,在与15 “&” 后得到5~8位即0011表示的数值