题目:
405. Convert a Number to Hexadecimal(easy)
解题思路:
可以使用进制转换的常规套路:
每次数字模完进制后存下来,然后除以进制… 如此循环,直到数字变成0。
题解参考:
“num&15 底层是二进制,所以比较的是二进制
列如 num=15 所以15&15—>1111&1111—>按位比较相同为1不同为0
所以得到1111B =15
比较之后 >>>=4向右移动四位 比较下一个四位 直到0000=0退出循环。”>>>
:无符号右移,也就是无论正数还是负数,前面都补0
另外java中Integer.toHexString(num)可以直接转化为十六进制的字符串。
代码:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17法一:利用Integer的库函数
public String toHex(int num) {
return Integer.toHexString(num);
}
法二:利用二进制进行运算
public String toHex(int num) {
char[] arr = "0123456789abcdef".toCharArray();
if(num == 0) return "0";
StringBuilder sb = new StringBuilder();
while(num != 0){
int temp = num & 15;
sb.append(arr[temp]);
num = num >>> 4;
}
return sb.reverse().toString();
}