【Python】2進数の文字列を任意の桁数で0埋めする方法を解説

この記事では、Pythonを使って2進数の文字列を任意の桁数で0埋めする方法を、サンプルコードを交えて解説していきます。

目次から探す

Pythonでの2進数の文字列の0埋め方法

Pythonで2進数の文字列を任意の桁数で0埋めする方法には、いくつかの方法があります。

この記事では、 str.format()str.zfill()f-string、そして bin()format() の組み合わせを使った方法を紹介します。

str.format()を使った方法

format()の基本

str.format() は、文字列の中にある波括弧{}に値を埋め込むためのメソッドです。

以下の例では、{}の部分に10が埋め込まれています。

text = "私は{}歳です。"
age = 10
result = text.format(age)
print(result)  # 私は10歳です。

format()での0埋め

str.format() を使って2進数の文字列を0埋めするには、波括弧{}の中に0と埋めたい桁数を記述します。

binary_number = "101"
result = "{:05}".format(binary_number)
print(result)  # 10100

これで0埋めできましたが、「違う、そうじゃない」と思っているはずです。

左詰めで0埋めしたい場合は{:>05}のように>を追加します。

binary_number = "101"
result = "{:>05}".format(binary_number)
print(result)  # 00101

str.zfill()を使った方法

zfill()の基本

str.zfill() は、文字列の左側に0を指定した桁数まで埋めるメソッドです。

以下の例では、"5"の左側に0を2桁で埋めています。

number = "5"
result = number.zfill(3)
print(result)  # 005

zfill()での0埋め

str.zfill() を使って2進数の文字列を0埋めするには、以下のようにします。

binary_number = "101"
result = binary_number.zfill(5)
print(result)  # 00101

f-stringを使った方法

f-stringの基本

f-stringは、Python 3.6以降で利用できる文字列の埋め込み機能です。

文字列の先頭にfまたはFを付け、波括弧{}の中に埋め込みたい値を記述します。

以下の例では、{}の部分に10が埋め込まれています。

age = 10
result = f"私は{age}歳です。"
print(result)  # 私は10歳です。

f-stringでの0埋め

f-stringを使って2進数の文字列を0埋めするには、波括弧{}の中に0と埋めたい桁数を記述します。

以下の例では、{}の部分に0を3桁で埋めた5が埋め込まれています。

binary_number = "101"
result = f"{binary_number:>05}"
print(result)  # 00101

format()関数と同じように>をつけて{数値:>05}のように記述しないと左詰めされないので注意してください。

これらの方法を使って、Pythonで2進数の文字列を任意の桁数で0埋めすることができます。

適切な方法を選んで、プログラムに取り入れてみてください。

その他の応用例

これまでに、Pythonで2進数の文字列を0埋めする方法をいくつか紹介しました。

しかし、これらの方法は2進数だけでなく、8進数や16進数の文字列にも応用することができます。

また、ビット演算と0埋めを組み合わせることで、より高度な処理が可能になります。

この章では、それらの応用例を紹介します。

8進数や16進数での0埋め

8進数や16進数の文字列も、2進数と同様に0埋めすることができます。

以下に、それぞれの方法を示します。

8進数での0埋め

# 8進数の数値を文字列に変換
oct_num = oct(15)[2:]  # '17'

# 0埋め
oct_num_padded = oct_num.zfill(4)  # '0017'
print(oct_num_padded)  # 0017

oct(数値)[2:]と書くことで、8進数文字列の先頭につく0oを除外できます。

16進数での0埋め

# 16進数の数値を文字列に変換
hex_num = hex(255)[2:]  # 'ff'

# 0埋め
hex_num_padded = hex_num.zfill(4)  # '00ff'
print(hex_num_padded)  # 00ff

hex(数値)[2:]と書くことで、16進数文字列の先頭につく0xを除外できます。

これらの方法は、 str.format()f-stringでも同様に適用できます。

これらの方法は、データの圧縮や暗号化など、さまざまな用途で活用できるので、0埋めした2進数文字列を使った方がいいケースでは、適宜0埋め処理を行うといいでしょう。

目次から探す