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