0
1

More than 1 year has passed since last update.

python初学者の備忘録 n進数変換について

Last updated at Posted at 2021-09-24

←目次へ

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'
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1