Given an integer, write an algorithm to convert it to hexadecimal. For negative integer, two’s complement method is used.
Note:
- All letters in hexadecimal (
a-f
) must be in lowercase. - The hexadecimal string must not contain extra leading
0
s. If the number is zero, it is represented by a single zero character'0'
; otherwise, the first character in the hexadecimal string will not be the zero character. - The given number is guaranteed to fit within the range of a 32-bit signed integer.
- You must not use any method provided by the library which converts/formats the number to hex directly.
Example :
Input: 26 Output: "1a"
分析:
将给定整数转换为16进制,确保结果不包含多余的0,且不能使用库函数。可以每次取出最右边4位,若>=10,转换为相应的字母加入结果中,否则直接加入,直到给定的数字num为0或者已经循环了8次。
class Solution {
public:
string toHex(int num) {
string res = "";
for(int i=0; num && i<8; i++)
{
int t = num & 0xf;
if(t >= 10)
res = char(t-10+'a') + res;
else
res = char('0'+t) + res;
num >>= 4;
}
return res.empty() ? "0" : res;
}
};