官术网_书友最值得收藏!

1.3 進(jìn)制轉(zhuǎn)換

在實(shí)際應(yīng)用中,通常會因?yàn)橐恍┨厥庑枨螅枰D(zhuǎn)換或者輸出使用二進(jìn)制、八進(jìn)制或十六進(jìn)制表示的整數(shù),如為防止某些數(shù)字以明文的形式出現(xiàn)。

為了將整數(shù)轉(zhuǎn)換為二進(jìn)制、八進(jìn)制或十六進(jìn)制的文本串,我們可以分別使用bin()、oct()或hex()函數(shù),相關(guān)代碼(binary_exp.py)如下:


x = 1234
print(f'binary of {x} is: {bin(x)}')
print(f'octal of {x} is: {oct(x)}')
print(f'hexadecimal of {x} is: {hex(x)}')

執(zhí)行py文件,輸出結(jié)果如下:


binary of 1234 is: 0b10011010010
octal of 1234 is: 0o2322
hexadecimal of 1234 is: 0x4d2

如果不想輸出0b、0o或者0x前綴,可以執(zhí)行如下操作(binary_exp.py):


print(f'binary not show 0b: {x: b}')
print(f'octal not show 0o: {x: o}')
print(f'hexadecimal not show 0x: {x: x}')

執(zhí)行py文件,輸出結(jié)果如下:


binary not show 0b:  10011010010
octal not show 0o:  2322
hexadecimal not show 0x:  4d2

整數(shù)是有符號的,如果處理的是負(fù)數(shù),輸出結(jié)果會包含一個(gè)負(fù)號,示例(binary_exp.py)如下:


x = -1234
print(f'binary of {x} is: {x: b}')
print(f'hexadecimal of {x} is: {x: x}')

執(zhí)行py文件,輸出結(jié)果如下:


binary of -1234 is: -10011010010
hexadecimal of -1234 is: -4d2

如果想得到一個(gè)無符號值,需要增加一個(gè)指示最大位長度的值。如為了顯示32位的值,可以執(zhí)行如下操作(binary_exp.py):


print(f'(2**32 + x) binary result:{2**32 + x: b}')
print(f'(2**32 + x) hexadecimal result: {2**32 + x:x}')

執(zhí)行py文件,輸出結(jié)果如下:


(2**32 + x) binary result: 11111111111111111111101100101110
(2**32 + x) hexadecimal result: fffffb2e

為了以不同的進(jìn)制轉(zhuǎn)換整數(shù)字符串,可以使用帶有進(jìn)制的int()函數(shù),相關(guān)代碼(binary_exp.py)如下:


print(int('4d2', 16))
print(int('10011010010', 2))

執(zhí)行py文件,輸出結(jié)果如下:


1234
1234

大多數(shù)情況下處理二進(jìn)制、八進(jìn)制和十六進(jìn)制整數(shù)是很簡單的,只要記住,這些轉(zhuǎn)換屬于整數(shù)和其對應(yīng)的文本表示之間的轉(zhuǎn)換即可。

使用八進(jìn)制時(shí)需要注意,Python中八進(jìn)制數(shù)的語法與其他進(jìn)制的語法稍有不同。如像下面這樣使用八進(jìn)制會出現(xiàn)錯(cuò)誤:


import os
os.chmod('test.py', 0755)

我們需確保八進(jìn)制數(shù)的前綴是0o,示例如下:


os.chmod('test.py', 0o755)

主站蜘蛛池模板: 锦州市| 确山县| 霍邱县| 时尚| 邵阳市| 邢台县| 衡南县| 翁源县| 靖远县| 济宁市| 上思县| 华阴市| 新竹县| 斗六市| 侯马市| 肥城市| 永春县| 漯河市| 苗栗县| 比如县| 靖宇县| 手游| 深水埗区| 乌鲁木齐县| 建德市| 乌海市| 钟祥市| 鄂托克旗| 萨迦县| 江西省| 通榆县| 清镇市| 封丘县| 宜阳县| 收藏| 台山市| 宣化县| 临沧市| 宁安市| 威远县| 晋城|