「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > Python で整数をバイト文字列に変換して戻すにはどうすればよいですか?

Python で整数をバイト文字列に変換して戻すにはどうすればよいですか?

2024 年 11 月 9 日に公開
ブラウズ:760

How Can I Convert Integers to Byte Strings and Back in Python?

「bytes(n)」を使用したバイト文字列の作成

Python 3 の「bytes(n)」関数は、整数をバイナリ表現に変換しますが、代わりに null バイト (b'\x00') で埋められた長さ n のバイト文字列を作成します。この動作は、整数をバイトにエンコードする手段として「to_bytes()」メソッドが導入された Python 3.2 に由来します。

To_Bytes および To_Bytes

()" メソッドを使用すると、バイト順序 (ビッグ エンディアンまたはリトル エンディアン) と長さを指定して、整数をバイト表現に明示的に変換できます。例:

(1024).to_bytes(2, byteorder='big') == b'\x04\x00'

From_Bytes および From_Bytes

補完的な「from_bytes()」メソッドは、バイト シーケンスを整数に変換し直すことができます:

int.from_bytes(b'\x04\x00', 'big') == 1024

符号なし整数

「to_bytes()」メソッドは、負でない (符号なし) 整数に対して機能します。符号付き整数を処理するには、少し異なるアプローチが必要です。

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)

これらの関数を使用すると、符号付き整数をバイト シーケンスにエンコードしたり、バイト シーケンスからデコードしたりできます。

リリースステートメント この記事は次の場所に転載されています: 1729407016 権利侵害がある場合は、[email protected] に連絡して削除してください。
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3