Python二进制转换

时间:2013-01-14 02:54:55

标签: python binary

我正在尝试将一些二进制输出从一个文件转换为不同的类型,我一直看到奇怪的东西。

例如,我有:

value = '\x11'

如果你这样做

bin(ord(value))

你得到了输出

'0b10001'

而我希望得到

'0b00010001'

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

3 个答案:

答案 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,它应该足够接近你想要的。