题解:
- 首先,我们需要创建一个映射表,将十进制数0-15映射到十六进制数的字符'0'-'f'。
- 然后,我们需要处理负数的情况。对于负数,我们首先将其转换为补码形式,然后再进行转换。
- 接下来,我们将输入的整数除以16,得到的商和余数分别对应于十六进制数的高位和低位。我们将余数转换为对应的十六进制字符,然后将商作为新的输入继续进行上述操作,直到商为0为止。
- 最后,我们将得到的十六进制字符反转,就得到了最终的结果。
class Solution:
def toHex(self, num: int) -> str:
if num == 0:
return "0"
hex_map = "0123456789abcdef"
res = ''
for _ in range(8):
n = num & 15
res = hex_map[n] + res
num = num >> 4
if num == 0:
break
return res.lstrip('0')