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"

class Solution:
    def toHex(self, num):
        """
        :type num: int
        :rtype: str
        """
        def positive(num):
            res = []
            while True:
                res.append(num%16)
                num = num//16
                if num==0:
                    break
            for i in range(len(res)):
                if res[i]<10:
                    res[i] = str(res[i])
                else:
                    res[i] = chr(87+res[i])
            return ''.join(res)[::-1]
        def negative(num):
            return positive(4294967296+num)
        if num>=0:
            return positive(num)
        else:
            return negative(num)
posted @ 2018-11-06 15:52  bernieloveslife  阅读(120)  评论(0编辑  收藏  举报