ホームページ > バックエンド開発 > Python チュートリアル > 「bytes(n)」が「n」のバイナリ形式を表さないのはなぜですか?

「bytes(n)」が「n」のバイナリ形式を表さないのはなぜですか?

Linda Hamilton
リリース: 2024-10-20 14:54:02
オリジナル
714 人が閲覧しました

Why Doesn't

なぜ「bytes(n)」はバイナリを表さないのですか?

Python 3 の「bytes(n)」関数は長さ 'n のバイト文字列を生成します' 整数 'n' をバイナリ表現に変換するのではなく、null バイトで埋められます。この予期しない動作は、Python 3.2 で導入された変更にルーツがあります。

'to_bytes' メソッド

整数をバイナリ表現に変換するには、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>
ログイン後にコピー

Signed Integers

「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 サイトの他の関連記事を参照してください。

ソース:php
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート