LeetCode405數字轉換為十六進製制數

2021-10-02 20:39:42 字數 1171 閱讀 1124

給定乙個整數,編寫乙個演算法將這個數轉換為十六進製制數。對於負整數,我們通常使用 補碼運算 方法。

注意:十六進製制中所有字母(a-f)都必須是小寫。

十六進製制字串中不能包含多餘的前導零。如果要轉化的數為0,那麼以單個字元』0』來表示;對於其他情況,十六進製制字串中的第乙個字元將不會是0字元。

給定的數確保在32位有符號整數範圍內。

不能使用任何由庫提供的將數字直接轉換或格式化為十六進製制的方法。

示例 1:

輸入:26 輸出:「1a」

示例 2:

輸入:-1 輸出:「ffffffff」

思路:

數字在計算機中都是以二進位制表示的,int為4個位元組,共有32位,4位二進位制數可以表示為乙個十六進製制的數,所以將輸入數字四位四位的轉換,每四位轉換成乙個數。將輸入數字和0x1111做與運算則得到最低四位,再將輸入數字右移四位,和0x1111做與運算,直到32位全部轉換

另外,輸出時不能包含前面多餘的零,在輸出時要從第乙個不為0的數起開始輸出,python lstrip() 方法用於截掉字串左邊的空格或指定字元。

對於負數來說,在計算機中,負數以原碼的補碼表示:負數的原碼是絕對值再設最高位符號位為1,比如-5:

10000000 00000000 00000000 00000101 原碼

111111111 111111111 111111111 111111010 反碼:除符號位其餘全取反

111111111 111111111 111111111 111111011 補碼:反碼+1

python**如下:

class solution(object):

def tohex(self, num):

""":type num: int

:rtype: str

"""if num == 0:

return '0'

s = '0123456789abcdef'

b = 0xf

res = ''

for i in range(8):

res = s[num&b] + res

num = num >> 4

return res.lstrip('0')

LeetCode 405 數字轉換為十六進製制數

給定乙個整數,編寫乙個演算法將這個數轉換為十六進製制數。對於負整數,我們通常使用 補碼運算 方法。注意 十六進製制中所有字母 a f 都必須是小寫。十六進製制字串中不能包含多餘的前導零。如果要轉化的數為0,那麼以單個字元 0 來表示 對於其他情況,十六進製制字串中的第乙個字元將不會是0字元。給定的數...

LeetCode 405 數字轉換為十六進製制數

給定乙個整數,編寫乙個演算法將這個數轉換為十六進製制數。對於負整數,我們通常使用 補碼運算 方法。注意 十六進製制中所有字母 a f 都必須是小寫。十六進製制字串中不能包含多餘的前導零。如果要轉化的數為0,那麼以單個字元 0 來表示 對於其他情況,十六進製制字串中的第乙個字元將不會是0字元。給定的數...

LeetCode 405數字轉換為十六進製制數

給定乙個整數,編寫乙個演算法將這個數轉換為十六進製制數。對於負整數,我們通常使用 補碼運算 方法。注意 十六進製制中所有字母 a f 都必須是小寫。十六進製制字串中不能包含多餘的前導零。如果要轉化的數為0,那麼以單個字元 0 來表示 對於其他情況,十六進製制字串中的第乙個字元將不會是0字元。給定的數...