ホームページ >バックエンド開発 >Python チュートリアル >Python でバイト文字列を整数に変換するにはどうすればよいですか?

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

DDD
DDDオリジナル
2024-10-27 08:43:30642ブラウズ

How do I convert byte strings to integers in Python?

Python でバイト文字列を整数に変換する

Python でバイトのシーケンスを扱う場合、対応するバイト文字列に変換する必要がある場合があります。整数表現。このタスクはさまざまな手法を使用して実行できますが、それぞれに独自の長所と短所があります。

文字列操作による変換のカスタマイズ

1 つの方法は、バイトを手動で反復処理することです。シーケンスを作成し、各バイトを数値に変換し、それに応じてそれらを組み合わせます。この方法により、エンディアンネス (マルチバイト整数内のバイトの順序) を柔軟に管理できます。例:

<code class="python">def bytes_to_int(bytestr):
  """Converts a string of bytes into an integer."""
  result = 0
  for i, byte in enumerate(bytestr[::-1]):
    result += ord(byte) << (i * 8)
  return result

16 進数変換のための組み込み関数の使用

あるいは、バイト シーケンスが 16 進数を表す場合は、それを直接変換することもできます。 int(xxx, 16) を使用した整数。このメソッドは、指定されたバイト文字列が 16 進形式であることを前提としています。

構造化データに struct モジュールを利用する

struct モジュールは、バイナリ データを処理するためのより包括的なソリューションを提供します。これを使用して、バイト シーケンスを、ビッグ エンディアンまたはリトル エンディアンのバイト オーダーなどの特定の形式に基づいて整数に変換できます。

<code class="python">import struct

def bytes_to_int_with_struct(bytestr, byteorder):
  """Converts a string of bytes into an integer using the `struct` module."""
  return struct.unpack(f"<L" if byteorder == 'little' else ">L", bytestr)[0]</code>

最適なアプローチの選択

最適な変換方法は、プロジェクトの特定の要件によって異なります。文字列操作による変換のカスタマイズは、エンディアンを最も細かく制御できますが、組み込み関数や構造体モジュールを使用するよりも遅くなる可能性があります。パフォーマンスが主な関心事の場合は、Python 3.2 で導入された int.from_bytes() または struct.unpack() がより効率的なオプションです。

ただし、さまざまなバイト オーダーを処理する必要がある場合、またはプラットフォームに依存しない動作を保証する必要がある場合は、 struct モジュールの柔軟性により、適切な選択となります。

以上がPython でバイト文字列を整数に変換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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