1

この例のように、Pythonでファイルにピット配列を書き込もうとしています: python bitarray to and from file

ただし、実際のテスト ファイルにゴミが入ります。

test_1 = ^@^@
test_2 = ^@^@

コード:

from bitarray import bitarray

def test_function(myBitArray):
    test_bitarray=bitarray(10)
    test_bitarray.setall(0)

    with open('test_file.inp','w') as output_file:
        output_file.write('test_1 = ')
        myBitArray.tofile(output_file)
        output_file.write('\ntest_2 = ')
        test_bitarray.tofile(output_file)

何がうまくいかないかについての助けをいただければ幸いです。

4

1 に答える 1

4

それはゴミではありません。このtofile関数は、バイナリ データをバイナリ ファイルに書き込みます。すべて 0 の10 ビット長bitarrayは、2 バイトの 0 として出力されます (ドキュメントでは、長さが 8 の倍数でない場合、0 ビットで埋められると説明されています)。それをテキストとして読み取ると、2 つの 0 バイト(多くの) プログラムが 0 バイトをテキストとして表す方法^@^@であるため、 のようになります。^@

人間が読めるテキストに適した表現が必要な場合to01は、人間が読める文字列を返すメソッドを使用します。例えば:

with open('test_file.inp','w') as output_file:
    output_file.write('test_1 = ')
    output_file.write(myBitArray.to01())
    output_file.write('\ntest_2 = ')
    output_file(test_bitarray.to01())

または、代わりにこれが必要かもしれません:

output_file(str(test_bitarray))

…次のような結果が得られます。

bitarray('0000000000')
于 2013-08-05T23:25:25.343 に答える