【leetcode】405. Convert a Number to Hexadecimal

描述:
输入一个整数,将其转化为16进制。若为负数,则取它的补码进行运算。

输入输出样例
样例1

输入: 26
输出: 1a

样例2

输入: -1
输出: ffffffff

解题思路
将这个数对16求余,之后除以16,依次从低位转换。

note:负数的补码处理可以采用 unsigned int x = numx /= 16处理。 也可以采用 num = ~(-num)+1 加上 x >> 4 处理,int 是32位的,每次移动 4 位,一共可以移动 8 次。

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class Solution {
public:
string toHex(int num) {
if (num == 0) { return "0"; }
unsigned int x = num;
//int x = num > 0 ? num : ~(-num) + 1;

string res = "";
do {
int ret = x % 16;
x /= 16;
if (ret < 10) { res = to_string(ret) + res; }
else { res = char('a'+ret%10)+res; }
} while (x);
return res;
}
};

参考资料
原题