Pythonでバイナリリテラルをどのように表現しますか?
それらは「バイナリ」リテラルではなく、「整数リテラル」です。0
整数リテラルは、a の後に aB
またはb
一連の 0 と 1 が続くバイナリ形式で表現できます。次に例を示します。
>>> 0b0010101010
170
>>> 0B010101
21
Python 3 docsから、これらは Python で整数リテラルを提供する方法です。
整数リテラルは、次の字句定義によって記述されます。
integer ::= decinteger | bininteger | octinteger | hexinteger
decinteger ::= nonzerodigit (["_"] digit)* | "0"+ (["_"] "0")*
bininteger ::= "0" ("b" | "B") (["_"] bindigit)+
octinteger ::= "0" ("o" | "O") (["_"] octdigit)+
hexinteger ::= "0" ("x" | "X") (["_"] hexdigit)+
nonzerodigit ::= "1"..."9"
digit ::= "0"..."9"
bindigit ::= "0" | "1"
octdigit ::= "0"..."7"
hexdigit ::= digit | "a"..."f" | "A"..."F"
使用可能なメモリに格納できるものを除けば、整数リテラルの長さには制限がありません。
ゼロ以外の 10 進数の先行ゼロは許可されないことに注意してください。これは、Python がバージョン 3.0 より前に使用していた C スタイルの 8 進数リテラルとのあいまいさを解消するためのものです。
整数リテラルの例:
7 2147483647 0o177 0b100110111
3 79228162514264337593543950336 0o377 0xdeadbeef
100_000_000_000 0b_1110_0101
バージョン 3.6 で変更:リテラル内でグループ化の目的でアンダースコアを使用できるようになりました。
バイナリを表現する他の方法:
操作可能な文字列オブジェクトに 0 と 1 を含めることができます (ただし、ほとんどの場合、整数に対してビット単位の操作を行う必要があります) - 0 と 1 の文字列と変換元の基数を int に渡すだけです (2 ):
>>> int('010101', 2)
21
オプションで、0b
または0B
接頭辞を付けることができます。
>>> int('0b0010101010', 2)
170
ベースとして渡す0
場合、文字列がプレフィックスで指定されていない場合、ベースは 10 と見なされます。
>>> int('10101', 0)
10101
>>> int('0b10101', 0)
21
int から人間が読めるバイナリへの変換:
bin に整数を渡して、バイナリ リテラルの文字列表現を確認できます。
>>> bin(21)
'0b10101'
bin
とを組み合わせint
て前後に移動できます。
>>> bin(int('010101', 2))
'0b10101'
前にゼロを付けて最小幅にしたい場合は、フォーマット仕様も使用できます。
>>> format(int('010101', 2), '{fill}{width}b'.format(width=10, fill=0))
'0000010101'
>>> format(int('010101', 2), '010b')
'0000010101'