Python 3 の「bytes(n)」関数は長さ 'n のバイト文字列を生成します' 整数 'n' をバイナリ表現に変換するのではなく、null バイトで埋められます。この予期しない動作は、Python 3.2 で導入された変更にルーツがあります。
整数をバイナリ表現に変換するには、Python 3.2 で導入された 'to_bytes' メソッドを使用できます。 Python3.2。次の例は、その使用法を示しています。
<code class="python">>>> (1024).to_bytes(2, byteorder='big') b'\x04\x00'</code>
または、整数からバイトへの変換を処理する独自の関数を実装することもできます。
<code class="python">def int_to_bytes(x: int) -> bytes: return x.to_bytes((x.bit_length() + 7) // 8, 'big') def int_from_bytes(xbytes: bytes) -> int: return int.from_bytes(xbytes, 'big')</code>
「to_bytes」メソッドは、符号なし整数の変換のみをサポートします。符号付き整数の場合、ビット長の計算はより複雑になります:
<code class="python">def int_to_bytes(number: int) -> bytes: return number.to_bytes(length=(8 + (number + (number < 0)).bit_length()) // 8, byteorder='big', signed=True) def int_from_bytes(binary_data: bytes) -> Optional[int]: return int.from_bytes(binary_data, byteorder='big', signed=True)</code>
以上が「bytes(n)」が「n」のバイナリ形式を表さないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。