进制转换可能是一个工作学习中的常见小任务,手写相关函数显然很麻烦。
Python有相关内置函数一般能满足我们的需求。bin()、oct()、hex()将十进制转换为常用的二、八、十六进制,而 int()函数可指定第二个参数从而将其它进制转换为十进制。或许后者即 int()函数的这一用法易被人忽略。
参数一般为 int 类型(可为负数),返回其二进制、八进制、十六进制的字符串(有相应前缀)
bin(x):返回 x 的二进制 '0b...'
oct(x):返回 x 的八进制 '0o...'
hex(x):返回 x 的十六进制 '0x...'
print(bin(27), oct(31), hex(-52))
0b11011 0o37 -0x34
int(x=0):从十进制整数/浮点数/对应字符串构造整数。对浮点数“去尾”(trunc; 无论正负)。
print(int(9.8), int(-9.8))
9 -9
int(x, base=10):x 为表示整数的字符串(前可有紧连的正负号),且若指定了 base 则 x 必须为字符串,base 必须为 2~36或0:
base 在 2~36 :x 中 10~35 的数位应依次由 a~z 或 A~Z 表示;二、八、十六进制数分别可有0b/0B, 0o/0O, 0x/0X 前缀。
base 等于 0:可识别 0b/0B, 0o/0O, 0x/0X 前缀;若无则按照十进制,但此时不得有前导0。
print(int(' +37 ',base=8), int(' -z8Y ',base=36))
31 -45682
print(int('0x34',base=16), int('0x34',base=0))
52 52
print(int('0x34'))
ValueError: invalid literal for int() with base 10: '0x34'