2013-01-14 84 views
0

我想将一些文件的二进制输出转换为不同的类型,并且我一直看到奇怪的东西。Python二进制转换

举例来说,我有:

value = '\x11' 

如果你

bin(ord(value)) 

你得到的输出

'0b10001' 

,而我希望能得到

'0b00010001' 

我基本上试图读取一个32字节的标题,把它变成1和0,所以我可以抓住不同含义的不同位。

回答

2

为什么不只是使用按位运算符?

def is_bit_set(i, x): 
    """Check if the i-th bit in x is set""" 
    return x & (1 << i) > 0 
2

为了得到需要的结果,请尝试:

"0b{:08b}".format(ord(value)) 

如果效率是您的关心,建议使用本机二进制表示的,而不是文字(字符串)二进制表示,对于位运算得多紧凑和高效。

0

format(ord('\x11'), '08b')会让你00010001,它应该足够接近你想要的。