题解
- 表面是10进制转换为16进制,实际上可以直接使用计算机存储的2进制形式转换为16进制
- 2进制 → 16进制,就是4位合并。
- 对于负数,仍然是4位合并。
- 但是负数补码存储。进行算数右移操作时,左补1,所以对于负数,算数右移操作永远都不会是0,需要控制位数。
- 32位2进制变成16进制,是8位.
AC-Code
class Solution {
public:
string toHex(int num) {
if (num == 0) return "0";
string hex = "0123456789abcdef";
string ans = "";
while(num && ans.size() < 8) {
ans = hex[num & 0xf] + ans;
num >>= 4;
}
return ans;
}
};