####←目次へ
python,Qiita初心者なので、備忘録として記載していきます。
なにせ初心者なので、知識不足はご理解ください。
知識を深めながら追記していきたいと思います。
#10進数、2進数、8進数、16進数
基本
#####それぞれの表記
10進数 | 2進数 | 8進数 | 16進数 |
---|---|---|---|
0 | 0 | 0 | 0 |
1 | 1 | 1 | 1 |
2 | 10 | 2 | 2 |
3 | 11 | 3 | 3 |
4 | 100 | 4 | 4 |
5 | 101 | 5 | 5 |
6 | 110 | 6 | 6 |
7 | 111 | 7 | 7 |
8 | 1000 | 10 | 8 |
9 | 1001 | 11 | 9 |
10 | 1010 | 12 | A |
11 | 1011 | 13 | B |
12 | 1100 | 14 | C |
13 | 1101 | 15 | D |
14 | 1110 | 16 | E |
15 | 1111 | 17 | F |
16 | 10000 | 20 | 10 |
##2進数,8進数, 16進数を10進数に変換
出力結果は数値型になる
# -- 2進数の前にはプレフィックス0bを付ける --
>>> 0b11111111
255
# -- 8進数の前にはプレフィックス0oを付ける --
>>> 0o377
255
# -- 16進数の前にはプレフィックス`0x`を付ける --
>>> 0xff
255
Python3.6からはプレフィックスの後ならどこにでも_を挿入できる
# -- 2進数 --
>>> 0b_1_1_1_1_1111
255
# -- 8進数 --
>>> 0o37_7
255
# -- 16進数 --
>>> 0x_f_f
255
ただし2連続以上はエラーになる
>>> 0b1__1111111
# SyntaxError: invalid binary literal
#####文字列で出力するにはstr()関数
をつかう
>>> str(0b11111111)
>>> str(0o377)
>>> str(0xff)
# -- 出力結果 --
'255' # 文字列型になる
##2進数への変換
#####bin()関数
:2進数の文字列に変換する
>>> bin(1)
'0b1'
>>> bin(2)
'0b10'
>>> bin(3)
'0b11'
>>> bin(4)
'0b100'
>>> bin(5)
'0b101'
#####format()関数
: 書式化指定文字にb
を指定することで2進数の文字列に変換する
>>> format(5, 'b')
'101'
# プレフィックスが必要な場合"#"を付ける
>>> format(5, '#b')
'0b101'
# 任意の桁数で0埋めすることもできる。
>>> format(5, '08b')
'00000101'
# プレフィックスをつけたい場合その分の文字数も考慮する
>>> format(5, '#010b')
'0b00000101'
#####format()メソッド
: 書式化指定文字にb
を指定することで2進数の文字列に変換する
>>> '{:#b}'.format(5)
'101'
# プレフィックスが必要な場合"#"を付ける
>>> '{:#b}'.format(5)
'0b101'
# 任意の桁数で0埋めすることもできる。
>>> '{:08b}'.format(5)
'00000101'
# プレフィックスをつけたい場合その分の文字数も考慮する
>>> '{:#010b}'.format(5)
'0b00000101'
#####f文字列
:書式化指定文字にb
を指定することで2進数の文字列に変換する
>>> f'{5:b}'
'101'
# プレフィックスが必要な場合"#"を付ける
>>> f'{5:#b}'
'0b101'
# 任意の桁数で0埋めすることもできる。
>>> f'{5:08b}'
'00000101'
# プレフィックスをつけたい場合その分の文字数も考慮する
>>> f'{5:#010b}'
'0b00000101'
##8進数への変換
#####oct()関数
:8進数の文字列に変換する
>>> oct(5)
'0o5'
>>> oct(6)
'0o6'
>>> oct(7)
'0o7'
>>> oct(8)
'0o10'
>>> oct(9)
'0o11'
>>> oct(10)
'0o12'
#####format()関数
: 書式化指定文字にo
を指定することで8進数の文字列に変換する
>>> format(10, 'o')
'12'
# プレフィックスが必要な場合"#"を付ける
>>> format(10, '#o')
'0o12'
# 任意の桁数で0埋めすることもできる。
>>> format(10, '08o')
'00000012'
# プレフィックスをつけたい場合その分の文字数も考慮する
>>> format(10, '#010o')
'0o00000012'
#####format()メソッド
: 書式化指定文字にo
を指定することで8進数の文字列に変換する
>>> '{:o}'.format(10)
'12'
# プレフィックスが必要な場合"#"を付ける
>>> '{:#o}'.format(10)
'0o12'
# 任意の桁数で0埋めすることもできる。
>>> '{:08o}'.format(10)
'00000012'
# プレフィックスをつけたい場合その分の文字数も考慮する
>>> '{:#010o}'.format(10)
'0o00000012'
#####f文字列
:書式化指定文字にo
を指定することで8進数の文字列に変換する
>>> f'{10:o}'
'12'
# プレフィックスが必要な場合"#"を付ける
>>> f'{10:#o}'
'0o12'
# 任意の桁数で0埋めすることもできる。
>>> f'{10:08o}'
'00000012'
# プレフィックスをつけたい場合その分の文字数も考慮する
>>> f'{10:#010o}'
'0o00000012'
##16進数への変換
#####hex()関数
:16進数の文字列に変換する
>>> hex(11)
'0xb'
>>> hex(12)
'0xc'
>>> hex(13)
'0xd'
>>> hex(14)
'0xe'
>>> hex(15)
'0xf'
>>> hex(16)
'0x10'
>>> hex(17)
'0x11'
#####format()関数
: 書式化指定文字にx
を指定することで16進数の文字列に変換する
>>> format(17, 'x')
'11'
# プレフィックスが必要な場合"#"を付ける
>>> format(17, '#x')
'0x11'
# 任意の桁数で0埋めすることもできる。
>>> format(17, '08x')
'00000011'
# プレフィックスをつけたい場合その分の文字数も考慮する
>>> format(17, '#010x')
'0x00000011'
#####format()メソッド
: 書式化指定文字にx
を指定することで16進数の文字列に変換する
>>> '{:#x}'.format(17)
'0x11'
# プレフィックスが必要な場合"#"を付ける
>>> '{:#x}'.format(17)
'0x11'
# 任意の桁数で0埋めすることもできる。
>>> '{:08x}'.format(17)
'00000011'
# プレフィックスをつけたい場合その分の文字数も考慮する
>>> '{:#010x}'.format(17)
'0x00000011'
#####f文字列
:書式化指定文字にx
を指定することで16進数の文字列に変換する
>>> f'{17:x}'
'11'
# プレフィックスが必要な場合"#"を付ける
>>> f'{17:#x}'
'0x11'
# 任意の桁数で0埋めすることもできる。
>>> f'{17:08x}'
'00000011'
# プレフィックスをつけたい場合その分の文字数も考慮する
>>> f'{17:#010x}'
'0x00000011'