は、私は次のコードをしている:なぜ私のBitArrayは分割されますか?
bittrans = '0b' + str(bitnumber)
strnumber = bitstring.BitArray(bittrans)
print bittrans
print strnumber
出力:
0b1001010100000010111110001111111111
0x9502f8ff, 0b11
はどのようにしてビット列のフォーム分割自体を停止していますか?
は、私は次のコードをしている:なぜ私のBitArrayは分割されますか?
bittrans = '0b' + str(bitnumber)
strnumber = bitstring.BitArray(bittrans)
print bittrans
print strnumber
出力:
0b1001010100000010111110001111111111
0x9502f8ff, 0b11
はどのようにしてビット列のフォーム分割自体を停止していますか?
BitArray
は、print
ビット配列を見て簡単にビット配列を作成するために使用する文字列表現です。それは内部表現とは関係がありません。
BitArray.__str__
がそうのように、バイトの束としてあなたbitarrayを表現したいので、それは分割:
0x95 02 f8 ff ?
あなたのビット列のビット数ではないので、明確バイトとしてあなたのビット列を表すことができません8の倍数:
In [60]: len('1001010100000010111110001111111111') % 8
Out[60]: 2
あなたの質問には文字列表現に残っているビット数があります。あなたは "単"の16進数として表現可能にするために、あなたの数字を6ビット以上埋めなければなりません。
あなたが代わりにstrnumber.bin
をプリントアウトすることができます:
In [75]: print strnumber.bin
1001010100000010111110001111111111
説明のためにありがとうございますが、strnumber.binをBitarrayに追加したい場合、ValueErrorをスローします:トークンには値がありません –
@OberonMeier:私が何を言おうとしているのか分かりません。 'print strnumber'と' strnumber.bin'を呼び出すだけで 'strnumber'のテキスト表現ができます。 'strnumber'を文字列に変換して作業する必要はありません。これは、' BitArray'オブジェクトを持つ点全体を打ち消すものです。あなたは 'bitarray_object_a.append(bitarray_object_b)' – Blender
私はサイズが私は問題 –
'bittrans'が文字列でなくて、それを他のビット列を追加することができ、大きなしかし、後にコードでのだと思いますが、 'strnumber'は' BitArray'オブジェクトです。文字列 'print'は文字列を明示的に出力しますが、オブジェクトを' print'することはオブジェクトが最初に文字列に変換される必要があることを意味します。この場合、['BitArray'はいくつかの面白いことをしようとします](https://github.com/scott-griffiths/bitstring/blob/master/bitstring.py#L931-L956)。 – Blender