【Python】bin 関数の使い方と実行結果

Python の組み込み関数 binビン の使い方です。

bin 関数で、整数を『2 進数にしんすう (binaryバイナリー)』で表現するコード例と、実行結果を載せました。

bin 関数は、整数を 2 進数の文字列に変換してくれました。

(例)bin(2) -> '0b10'

あと、『エラーになったコード例』も書きました。

エラーになったコード例

bin 関数で、エラーになったコードれいです。

bin 関数に整数せいすうでないものを渡したら、『整数として解釈できませんでした』というむねのエラーメッセージが出ました。

(Python) bin(x)

bin('') # '' 空文字列
TypeError: 'str' object cannot be interpreted as an integer
bin('5') # '5'
TypeError: 'str' object cannot be interpreted as an integer
bin('a') # 'a'
TypeError: 'str' object cannot be interpreted as an integer
bin(1.2) # 1.2
TypeError: 'float' object cannot be interpreted as an integer
bin(complex(3, 4)) # (3+4j)
TypeError: 'complex' object cannot be interpreted as an integer
bin(None) # None
TypeError: 'NoneType' object cannot be interpreted as an integer
bin(()) # ()
TypeError: 'tuple' object cannot be interpreted as an integer
bin([]) # []
TypeError: 'list' object cannot be interpreted as an integer
bin(set()) # set()
TypeError: 'set' object cannot be interpreted as an integer
bin({}) # {}
TypeError: 'dict' object cannot be interpreted as an integer
bin(range(0, 1)) # range(0, 1)
TypeError: 'range' object cannot be interpreted as an integer
bin(lambda x: x) # <function <lambda> at 0x0000000000000000>
TypeError: 'function' object cannot be interpreted as an integer
bin(bytes([5])) # b'\x05'
TypeError: 'bytes' object cannot be interpreted as an integer
bin(bytearray([5])) # bytearray(b'\x05')
TypeError: 'bytearray' object cannot be interpreted as an integer
from decimal import Decimal
bin(Decimal(1)) # Decimal('1')
TypeError: 'decimal.Decimal' object cannot be interpreted as an integer
import datetime
bin(datetime.datetime.max) # datetime.datetime(9999, 12, 31, 23, 59, 59, 999999)
TypeError: 'datetime.datetime' object cannot be interpreted as an integer
import datetime
bin(datetime.timedelta.max) # datetime.timedelta(days=999999999, seconds=86399, microseconds=999999)
TypeError: 'datetime.timedelta' object cannot be interpreted as an integer

bool を渡した結果

bin 関数に、boolブール真理値しんりち)を渡した結果です。

(Python) bin(x)

(Python) False

(Python) True

bin(False) # False
'0b0'
bin(True) # True
'0b1'

int を渡した結果

bin 関数に、intイント整数せいすう)を渡した結果です。

(Python) bin(x)

(Python) class int([x])

bin(3) # 3
'0b11'
bin(2) # 2
'0b10'
bin(1) # 1
'0b1'
bin(0) # 0
'0b0'
bin(-1) # -1
'-0b1'
bin(-2) # -2
'-0b10'
bin(-3) # -3
'-0b11'

ほかの方法

bin 関数の代わりに、

  • formatフォーマット 関数
  • str.formatエスティーアール ドット フォーマット メソッド
  • f''エフストリング

を使用して、2 進数の文字列に変換することもできました。

接頭辞せっとうじについてです。

2 進数の先頭に '0b'ゼロビー を付けることもできましたし、逆に、'0b' を付けずに、2 進数の部分だけを取得することもできました。

2 -> '0b10'

2 進数の先頭に、接頭辞の '0b' を付けて変換するコード例です。

format 関数の実行結果です。

(Python) format(value[, format_spec])

(Python) 書式指定ミニ言語仕様 '#' オプション

format(2, '#b')
'0b10'
format(0, '#b')
'0b0'
format(-2, '#b')
'-0b10'

str.format メソッドの実行結果です。

(Python) str.format(*args, **kwargs)

'{n:#b}'.format(n=2)
'0b10'
'{n:#b}'.format(n=0)
'0b0'
'{n:#b}'.format(n=-2)
'-0b10'

f''エフストリング の実行結果です。

(Python) フォーマット済み文字列リテラル (f-string, f''

f'{2:#b}'
'0b10'
f'{0:#b}'
'0b0'
f'{-2:#b}'
'-0b10'

2 -> '10' 接頭辞 '0b' 無し

2 進数の先頭に、接頭辞せっとうじ'0b'ゼロビー を付けないようにして変換するコード例です。

『2 進数の部分だけ』の文字列を取得することができました。

当然のことながら、結果だけを見たら、もはや何進数の数なのか、わからなくなっていました。

format 関数の実行結果です。

(Python) format(value[, format_spec])

(Python) 書式指定ミニ言語仕様 '#' オプション

format(2, 'b')
'10'
format(0, 'b')
'0'
format(-2, 'b')
'-10'

str.format メソッドの実行結果です。

(Python) str.format(*args, **kwargs)

'{n:b}'.format(n=2)
'10'
'{n:b}'.format(n=0)
'0'
'{n:b}'.format(n=-2)
'-10'

f''エフストリング の実行結果です。

(Python) フォーマット済み文字列リテラル (f-string, f''

f'{2:b}'
'10'
f'{0:b}'
'0'
f'{-2:b}'
'-10'

ところで、printf 形式の % 演算子で、2 進数の文字列表現を取得する方法は、無いようでした。

(Python) printf 形式の文字列書式化(% 演算子)に載っていた、『変換フラグ文字』と『変換型』の表を見ました。

ですが、% 演算子で 2 進数に変換する方法は、見つかりませんでした。

以上です。

スポンサーリンク
Python評価
シェアする(押すとSNS投稿用の『編集ページ』に移動します)
フォローする(RSSフィードに移動します)
スポンサーリンク
シラベルノート
タイトルとURLをコピーしました