1. 程式人生 > 其它 >3.4二八十六進位制整數

3.4二八十六進位制整數

問題

​ 你需要轉換或者輸出使用二進位制,八進位制或者十六進位制表示的整數。

解決方案

​ 為了將整數轉換為二進位制、八進位制或十六進位制的文字串,可以分別使用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。