[LeetCode] 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
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 1:
Input: 26 Output: "1a"
Example 2:
Input: -1 Output: "ffffffff"
将十进制数转换成十六进制数,并将十六进制数转换成字符串。因为十六进制数每一位由二进制数每4位组成。所以将十进制数用二进制表示,然后每4位转换成十六进制数,[num & 0xf]就是取二进制数的最低4位。因为-1的二进制每一位都是1,所以引入count计数,只计算32位数即可。
class Solution { public: const string HEX = "0123456789abcdef"; string toHex(int num) { string s; if (num == 0) return "0"; int count = 0; while (num && count++ < 8) { s = HEX[num & 0xf] + s; num >>= 4; } return s; } }; // 3 ms