数値から文字列への変換
10進数(str関数)
str関数で引数の数値を文字列化。
整数の場合、桁数が多くてもそのまま文字列化される。
1 2 3 4 |
>>> str(1234) '1234' >>> str(12345678901234567890) '12345678901234567890' |
実数の場合は有効数値で丸められる。
1 2 |
>>> str(123.45678901234567890) '123.45678901234568' |
浮動小数点で与えると、桁数が収まる範囲で固定少数表示の文字列になる。
1 2 3 4 5 6 |
>>> str(1e3) '1000.0' >>> str(1e15) '1000000000000000.0' >>> str(1e16) '1e+16' |
2進数、8進数、16進数
組み込み関数を使う方法
bin、oct、hex関数を使った場合、プレフィックス’0b’、’0o’、’0x’がついた文字列になる。
1 2 3 4 5 6 |
>>> bin(31) '0b11111' >>> oct(4095) '0o7777' >>> hex(65535) '0xffff' |
format関数を使う方法
format関数の第2引数に基数に対応した文字を指定する。
1 2 3 4 5 6 7 8 |
>>> format(255, 'b') '11111111' >>> format(255, 'o') '377' >>> format(255, 'x') 'ff' >>> format(255, 'X') 'FF' |
第2引数で、桁数を指定して空いた上位桁を0で埋めることができる。
1 2 3 4 5 6 |
>>> format(15, '08b') '00001111' >>> format(15, '04o') '0017' >>> format(15, '02x') '0f' |
書式文字列を使う方法
書式文字列と%演算子を使っても、数値を文字列化できるが、2進数には対応していない。
1 2 3 4 5 6 |
>>> '%#o' % 255, '%o' % 255 ('0o377', '377') >>> '%#x' % 255, '%x' % 255 ('0xff', 'ff') >>> '%#X' % 255, '%X' % 255 ('0XFF', 'FF') |
文字列から数値への変換
10進数
整数(int関数)
int関数は整数の文字列を数値化するが、実数形式の文字列を与えるとエラーになる。
1 2 3 4 5 6 |
>>> int('1234') 1234 >>> int('1.') Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: invalid literal for int() with base 10: '1.' |
実数(float関数)
float関数は実数の文字列を数値化する。固定小数点/浮動小数点のどちらの表現でもかまわない。
1 2 3 4 5 6 7 8 |
>>> float('1234') 1234.0 >>> float('1.234') 1.234 >>> float('1e15') 1000000000000000.0 >>> float('1e16') 1e+16 |
2進数、8進数、16進数
int関数の第2引数で基数を指定する。
1 2 3 4 5 6 |
>>> int('1111', 2) 15 >>> int('7777', 8) 4095 >>> int('FFFF', 16) 65535 |
第2引数には2~36まで指定可能で、0~9とA~Zまで使った36進法まで変換可能。
1 2 3 4 5 6 7 8 9 10 |
>>> int('1000', 1) Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: int() base must be >= 2 and <= 36 >>> int('1000', 3) 27 >>> int('GGGG', 17) 83520 >>> int('ZZZZ', 36) 1679615 |
‘0b’、’0o’、’0x’のプレフィックスを付けた文字列を変換するときは、第2引数を0にする。この場合、10進数も変換可能。
1 2 3 4 5 6 7 8 |
>>> int('0x1111', 0) 4369 >>> int('0x7777', 0) 30583 >>> int('0xFFFF', 0) 65535 >>> int('9999', 0) 9999 |