Pythonでバイナリを数値に、数値をバイナリに変換する方法

スポンサーリンク

読者の今回は、整数データに対するPythonのビット関数をいくつか取り上げます。

それでは、はじめましょう

スポンサーリンク

Pythonのビット関数って何?

Pythonのビット関数を使う前に、まず整数の相互変換を理解しましょう。

データ値の変換は、手作業を自動化するときや、システムレベルの情報を扱うときに登場します。

16進数、8進数などの異なる数値形式を含むデータを扱う場合、ビット関数は整数のビットレベルデータを分析する際に重要な役割を果たします。

Pythonは以下のようなビットレベルの関数を提供し、ビットレベルの情報と表現に関して整数データを分析するのに役立っています。

  1. bit_length()関数
    1. tottp_bytes() 関数
  2. int.from.int_bytes()関数

Python のビット関数を理解する

それでは、上記の関数を1つずつ見ていきましょう。

1. Python bit_length()関数

bit_length()関数は、渡された整数データ値のバイナリ表現を持つために必要となるビット数をカウントして返します。

この関数では、データ値の符号や先頭のゼロは考慮されません。

例えば、以下の様になります。

この例では、最初にbit_length()関数にdata = 3を渡しました。

しかし、整数値3を2進数で表現すると、2つのゼロ、すなわち合計4ビット(0011)が含まれます。

しかし、この関数は先頭のゼロを考慮しないので、ゼロでない位置だけを数えます。

さらに、負の7、つまり(-7)を関数に渡しました。

しかし、この関数は符号を無視するので、他の正の整数のように扱われます。

data = 3
print(data.bit_length())
num = 9
print(num.bit_length())
 
num = -7
print(num.bit_length())

を結果を出力すると、以下の様になります。

2
4
3

2. Python toenta_bytes()関数

int.to_bytes()関数も整数値をバイト配列で表現します。

構文は以下の様な感じです。

int.to_bytes(length, byteorder, signed=False)
  1. 長さ 長さ: 結果の配列の長さを表す。
  2. byteorder: バイトオーダー。big’を指定すると、最上位のバイトが配列の先頭に置かれる。little’に設定すると、最上位バイトはバイト配列の末尾に配置されます。
  3. 符号付き。True に設定すると、整数をバイト配列として表現するために 2 の補数を使用します。

例えば、以下の様になります。

この例では、整数値2048を長さ4のバイト配列で表現し、最上位のバイトを配列の先頭に置いています。

print((2048).to_bytes(4, byteorder ='big'))

結果を出力すると、以下の様になります。

b'x00x00x08x00'

3. 3. Pythonのfrom_bytes()関数

int.to_bytes()関数と全く逆に、int.from_bytes()関数を使用することができます

つまり、byteorder パラメータと一緒にバイトの配列を引数に取り、それに対応する整数を返す関数です。

構文は以下の様な感じです。

int.from_bytes(bytes, byteorder, signed=False)

例えば、以下の様になります。

print(int.from_bytes(b'x00x04', byteorder ='big'))

結果は以下の通りです。

4

まとめ

ここまでで、このトピックは終了です。

何か疑問があれば、お気軽にコメントください。

Pythonプログラミングに関連するこのような記事のために、私たちと一緒にご期待ください。

では、また。

タイトルとURLをコピーしました