3.4二八十六進位制整數
阿新 • • 發佈:2022-03-05
問題
你需要轉換或者輸出使用二進位制,八進位制或者十六進位制表示的整數。
解決方案
為了將整數轉換為二進位制、八進位制或十六進位制的文字串,可以分別使用bin(),oct()或hex()函式:
x=1234
print(bin(x)) # ->0b10011010010
print(oct(x)) # ->0o2322
print(hex(x)) # ->0x4d2
另外,如果你不想輸出0b,0o或者0x的字首的話,可以使用format()函式。比如:
print(format(x,'b')) # ->10011010010 print(format(x,'o'))# ->2322 print(format(x,'x')) # ->4d2
整數是有符號的,所以如果你在處理負數的話,輸出結果會包含一個負號。比如:
x=-1234
print(format(x,'b')) # ->-10011010010
print(format(x,'x')) # -> -4d2
print(format(x,'x')) # -> -4d2
如果你想產生一個無符號值,你需要增加一個指示最大位長度的值。比如為了顯示32位的值,可以像下面這樣寫:
x=-1234 print(format(2**32+x,'b')) # ->11111111111111111111101100101110 print(format(2**32+x,'x'))# ->fffffb2e
為了以不同的進位制轉換整數字符串,簡單的使用帶有進位制的int()函式即可:
print(int('4d2',16)) # ->1234
print(int('10011010010',2)) #->1234
討論
大多數情況下處理二進位制、八進位制和十六進位制整數是很簡單的。只要記住這些轉換屬於整數和其對應的文字表示之間的轉換即可。永遠只有只有一種整數型別。
最後,使用八進位制的程式設計師有點需要注意下。Python指定八進位制的語法跟其他語言稍有不同。需要確保八進位制數的字首是0o。