LeetCode 405. Convert a Number to Hexadecimal
题目描述:
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
0s. 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 1:
Input: 26 Output: "1a"Example 2:
Input: -1 Output: "ffffffff"
由于传入的数据是int型, 所以其实负数就已经是用补码来表示了. 因此只要每次取四位二进制位出来然后把它们转换为16进制即可.
class Solution {
public:
string toHex(int num) {
int n = num;
string hex;
for(int i = 0; i < 8; i++){
hex.push_back(toCharHex(n & 0xf));
n >>= 4;
}
while(hex.size() > 1 && hex.back() == '0') hex.pop_back();
reverse(hex.begin(), hex.end());
return hex;
}
char toCharHex(int num){
if(num < 10){
return num + '0';
}
else{
return num - 10 + 'a';
}
}
};
评论