# 3.4 同二进制、八进制、十六进制数打交道

# 目标：对二进制、八进制、十六进制表示的数值做转换或输出。
# 解决方案：

# 将一个整数转换为二进制、八进制和十六进制的文本字符串的形式，分别使用bin()、oct()和hex()函数
x = 1234
x1 = bin(x)  # 二进制
print(x1)   # 0b10011010010

x2 = oct(x)  # 八进制
print(x2)   # 0o2322

x3 = hex(x)  # 十六进制
print(x3)   #  0x4d2

# 如果不想出现前缀，使用format函数：
x4 = format(x, 'b')
print(x4)   # 10011010010

x5 = format(x, 'o')
print(x5)   # 2322

x6 = format(x, 'x')
print(x6)   # 4d2

# 如果处理的是负数，输出中也会带上符合：
y = -1234
y1 = format(y, 'b')
print(y1)   # -10011010010

y2 = format(y, 'x')
print(y2)   # -4d2

# 如果要产生无符号的数值，需要加上最大值来设置比特位的长度，比如要展示一个32位数：
y3 = format(2**32 + y, 'b')
print(y3)   # 11111111111111111111101100101110

y4 = format(2**32 + y, 'x')
print(y4)   # fffffb2e

# 将字符串形式的整数转化为不同的进制，使用int()函数：
z1 = int('4d2', 16)
print(z1)   # 1234

z2 = int('10011010010', 2)
print(z2)   # 1234
