【力扣日記】405 數字轉16進制 | 位運算

題目描述

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

注意:
十六進制中所有字母(a-f)都必須是小寫。
十六進制字符串中不能包含多餘的前導零。如果要轉化的數爲0,那麼以單個字符’0’來表示;對於其他情況,十六進制字符串中的第一個字符將不會是0字符。
給定的數確保在32位有符號整數範圍內。

算法

class Solution:
    def toHex(self, num: int) -> str:
        if not num:return '0'
        hex="0123456789abcdef"
        ans=''
        while num and len(ans)<8:
            ans=hex[num&0xf]+ans
            num>>=4
        return ans

【筆記】核心思想,使用位運算,每4位,對應1位16進制數字。
使用0xf(00…01111b)獲取num的低4位。>>算數位移,其中正數右移左邊補0,負數右移左邊補1。
位移運算並不能保證num==0,需要使用32位int保證(對應16進制小於等於8位)。
使用string直接進行字符串拼接…

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章