leetcode-convert-a-number-hexadecimal

题目大意

  https://leetcode.com/problems/convert-a-number-to-hexadecimal/

  将一32位整数转成补码表示

题目分析

  其实就是把整数在计算机内的真实存储形式表示出来,注意题目要求结果的前面不允许有引导‘0’。(正数转换成相应的负数(反过来也一样)的方式都是:所有位取反然后加1,0要单独考虑)

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
public class Solution {
private static char[] symbol = new char[]{'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'};
public String toHex(int num) {
if (num == 0) {
return "0";
}
StringBuilder sb = new StringBuilder();
for (int i = 0; i < 8; i++) {
sb.append(symbol[num & 15]);
num >>= 4;
}
String tmp = sb.reverse().toString();
StringBuilder sb2 = new StringBuilder();
boolean found = false;
for (int i = 0; i < 8; i++) {
if (tmp.charAt(i) != '0') {
found = true;
}
if (found) {
sb2.append(tmp.charAt(i));
}
}
return sb2.toString();
}
}