力扣日記 405 數字轉16進製制 位運算

2021-10-03 10:14:14 字數 773 閱讀 7240

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

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

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

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

class

solution

:def

tohex

(self, num:

int)

->

str:

ifnot 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直接進行字串拼接…

16進製制轉8進製

很有意思。開始沒注意題直接 x o 然後看到了 這個16進製制的數長度不超過100000 妥妥又是高精度問題。還有個錯誤就是把二進位制左右反了,導致半天找不出錯。然後就把二進位制打出來,找到了。大體思路就是16 2 8 如 f 1111 17 ff 1111 1111 011 111 111 377...

16進製制轉8進製

16進製制轉8進製 思路 16進製制轉成2進製串,2進製串從後每3位轉成8進製串 include include define maxn 10 define maxlength 100000 int main else bi k 0 if temp 4 else bi k 0 if temp 2 e...

字串轉16進製制數字

網上關於字串轉數字的資料比較散亂,說什麼的都有,為了方便自己記憶在這裡記錄一下。標準c方法 char strhex 0xff long lvalue strtol strhex,null,16 類似的還有strtod 將字串轉換成浮點數 strtoul 將字串轉換成無符號長整型數 如果不要求必須轉為...