唯物是真 @Scaled_Wurm

プログラミング(主にPython2.7)とか機械学習とか

Pythonでの数値とビット文字列の変換方法

メモ程度の内容。

ビット文字列から数値

>>> int('0011', 2)
3
>>> int('0b0011', 2)
3

数値からビット文字列

>>> bin(10)
'0b1010'

注意点は'1010'ではなく'0b1010'になること。

負の値

数値の符号がマイナスの場合には以下のようになる。
2の補数にはならないみたい。

>>> bin(-10)
'-0b1010'
>>> bin(-1)
'-0b1'

16進数

int(number, 2)の代わりにint(number, 16)を使う。
またbinの代わりにhexを使う。

>>> hex(-11)
'-0xb'
>>> int('0xb', 16)
11

1であるビットの数を数える(簡易版)

文字列にしてからカウント。
タイプ数が少ないけど、正の数の時にしか使えない。

>>> bin(100).count('1')
3