1

とを使用chrintて、バイナリ表現文字列を実際のバイナリ値に変換しています。

私がしたことは

   n=int('0101011',2)
   binary=chr(n)

次にbinary、表現文字列の実際のバイナリ値です。

しかし、intに与えた文字列が10進数で256より大きい場合はどうなりますか?

解決策はありますか?

PS:n chrを使用する理由は、を使用してファイルに書き込めるように文字列 に変換したいからですf.write()

そして、この質問はこの質問から生じています

4

4 に答える 4

8

chr()はASCII文字で動作するものとして定義されており、値は256未満である必要があります。Unicode文字を期待している場合は、unichr()代わりに使用できます。

于 2011-08-27T14:51:52.560 に答える
1

pack()モジュールのメソッドに指定された書式文字列でさまざまな書式文字を使用してstruct、長さが 1 ~ 8 バイトの符号付きまたは符号なし整数の対応するバイナリ表現文字列を簡単に取得できます。

>>> from struct import pack
>>> pack('B', 255)
'\xff'
>>> pack('H', 257)
'\x01\x01'
>>> pack('Q', 9223372036854775807)
'\xff\xff\xff\xff\xff\xff\xff\x7f'

返された値は、必要に応じて使用してファイルに書き込むことができますf.write()。バイナリ データをファイルに読み書きするときは、ファイルmodeを実行するときに引数値に'b' を追加する必要がopen()あります。

于 2011-08-27T16:05:36.943 に答える
0

あなたの質問を理解したら、バイナリ文字列を整数値に変換したいと考えています。それが、コードの最初の行で行っていることです。2 行目は、整数値を ASCII テーブルでその値によって表される文字に変換するだけです。たとえば、文字列が 01100001 の場合、最初のステップで 97 の int 値に変換されます。Tue の 2 番目のステップは、97 を ASCII 文字 'a' に変換します。次に、この変数を数値として使用しようとすると、ing 値 97 に変換されます。したがって、質問を理解できれば、ステップ 1 の後に実際に目的の数値が得られます。

于 2011-08-27T15:03:32.657 に答える