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 に答える