0

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

例如,我有:

value = '\x11'

如果你这样做

bin(ord(value))

你得到输出

'0b10001'

而我希望得到

'0b00010001'

我基本上是在尝试读取 32 字节的标头,将其转换为 1 和 0,这样我就可以获取具有不同含义的各种位。

4

3 回答 3

2

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

def is_bit_set(i, x):
    """Check if the i-th bit in x is set"""
    return x & (1 << i) > 0
于 2013-01-14T03:00:52.687 回答
2

要获得所需的输出,请尝试:

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

如果您关心效率,建议使用本机二进制表示而不是文字(字符串)二进制表示,因为按位运算更加紧凑和高效。

于 2013-01-14T07:05:38.910 回答
0

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

于 2013-01-14T07:07:04.663 回答