我想将一些文件的二进制输出转换为不同的类型,并且我一直看到奇怪的东西。Python二进制转换
举例来说,我有:
value = '\x11'
如果你
bin(ord(value))
你得到的输出
'0b10001'
,而我希望能得到
'0b00010001'
我基本上试图读取一个32字节的标题,把它变成1和0,所以我可以抓住不同含义的不同位。
我想将一些文件的二进制输出转换为不同的类型,并且我一直看到奇怪的东西。Python二进制转换
举例来说,我有:
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
,它应该足够接近你想要的。