給定乙個整數,編寫乙個演算法將這個數轉換為十六進製制數。對於負整數,我們通常使用補碼運算方法。
注意:十六進製制中所有字母(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 將字串轉換成無符號長整型數 如果不要求必須轉為...