我正在尝试将文件中的一些二进制输出转换为不同的类型,但我一直看到奇怪的东西。
例如,我有:
value = '\x11'
如果你这样做
bin(ord(value))
你得到输出
'0b10001'
而我希望得到
'0b00010001'
我基本上是在尝试读取 32 字节的标头,将其转换为 1 和 0,这样我就可以获取具有不同含义的各种位。
为什么不只使用位运算符?
def is_bit_set(i, x):
"""Check if the i-th bit in x is set"""
return x & (1 << i) > 0
要获得所需的输出,请尝试:
"0b{:08b}".format(ord(value))
如果您关心效率,建议使用本机二进制表示而不是文字(字符串)二进制表示,因为按位运算更加紧凑和高效。
format(ord('\x11'), '08b')
会得到你00010001
,这应该足够接近你想要的。