思路:
- 每次取出int数中的后四位,转换为对应的十六进制数;
- 向右进行逻辑移位4位——>意思为将刚刚取出四位移出
- 重复上述操作,直至int的值为全0
补充:
此处是逻辑移位,因为逻辑移位不论是不是补码,原码,都是补0。方便观察是否全部值为0,则可以结束。
代码:
public String toHex(int num) {
if (num == 0) return "0";
char[] ant = "0123456789abcdef".toCharArray();
StringBuilder sb = new StringBuilder();
while (num != 0 && sb.length() < 8) {
sb.append(ant[num & 0xf]);//num & 0xf 表示int中低四位的二进制数表示的大小
num >>>= 4;
}
return sb.reverse().toString(); //此处需要将StringBuilder里面的字符串反转,因为添加时是从低位开始添加的
}