\

Pythonでは、エンディアンを扱うためのいくつかの方法があります。エンディアンとは、バイトオーダー(バイトの並び順)のことを指します。ビッグエンディアンとリトルエンディアンの2種類があり、それぞれ異なるバイトオーダーを持っています。

intからbytesへの変換

Pythonでは、int型の数値をbytes型に変換することができます。これにはto_bytesメソッドを使用します。以下に例を示します。

n = 0b1111000111110010  # 2バイトの数値
# ビッグエンディアン
bytes_big = n.to_bytes(2, 'big')  # b'\xf1\xf2'
# リトルエンディアン
bytes_little = n.to_bytes(2, 'little')  # b'\xf2\xf1'

bytesからintへの変換

bytes型からint型への変換も可能です。これにはfrom_bytesメソッドを使用します。

# ビッグエンディアン
int_big = int.from_bytes(b'\xf1\xf2', 'big')  # 61938
# リトルエンディアン
int_little = int.from_bytes(b'\xf2\xf1', 'little')  # 61938

structモジュールを使った方法

Pythonのstructモジュールを使うと、さまざまな型のデータをバイト列にパックしたり、バイト列からデータをアンパックしたりすることができます。

import struct
n = 0b1111000111110010
# 2バイト(符号なし)でビッグエンディアン
bytes_big = struct.pack(">H", n)  # b'\xf1\xf2'
# 4バイト(符号あり)でリトルエンディアン
bytes_little = struct.pack("<l", n)  # b'\xf2\xf1\x00\x00'

以上、Pythonでエンディアンを扱う基本的な方法について説明しました。これらの知識を活用して、バイナリデータの操作に挑戦してみてください。

投稿者 admin

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です