ホームページ  >  記事  >  バックエンド開発  >  Python の「bytes(n)」が 2 進整数ではなくバイト文字列を生成するのはなぜですか?

Python の「bytes(n)」が 2 進整数ではなくバイト文字列を生成するのはなぜですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-10-20 14:51:02406ブラウズ

Why Does

Python の "bytes(n)" の奇妙な動作を理解する

Python 3 では、"bytes(n)" 関数は長さ " のバイト文字列を生成します。 「n」をバイナリ表現に変換するのではなく、「n」を使用します。この一見奇妙な動作は、Python 開発者の間で混乱を引き起こしました。

この動作を理解するために、関数の歴史を詳しく調べてみましょう。 Python 3.2 より前では、「bytes(n)」は一連のゼロバイトを作成していました。これにより、ネットワークやデータ構造によく使用される固定長のバイト配列を簡単に作成できるようになりました。しかし、Python 3 が進化するにつれて、焦点はオブジェクト指向設計に移りました。その結果、「bytes」オブジェクトが導入され、バイナリ データの処理に特化したさまざまなメソッドと操作が提供されました。

「bytes」オブジェクトの導入により、「bytes(n)」の動作が変更されました。 」と再定義されました。今度は、ゼロ値に初期化された一連のバイトが割り当てられました。この変更は、オブジェクト指向のアプローチに合わせて行われ、バイナリ データを操作するための一貫した直感的なインターフェイスを提供します。

あるいは、整数をバイナリ表現に変換することが目的の場合、「to_bytes」という方法を採用することができる。このメソッドは整数のバイト表現を返し、バイト順序と符号の有無をより詳細に制御できます。例:

<code class="python">(1024).to_bytes(2, byteorder='big')</code>

このコード スニペットは、整数 1024 に相当するバイトをビッグ エンディアン形式で返します。

<code class="python">b'\x04\x00'</code>

符号付き整数の場合、「to_bytes」メソッドは追加パラメータ「signed」。バイナリ表現の符号付きを指定します。

以上がPython の「bytes(n)」が 2 進整数ではなくバイト文字列を生成するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。