chr()【Unicode コードポイント ⇒ 文字】
ord()【文字 ⇒ Unicode コードポイント】
bin()【2 進文字列変換】
oct()【8 進文字列変換】
hex()【16 進文字列変換】
ascii()【印字可能文字列変換 (エスケープ)】
repr()【印字可能文字列変換】

chr()【Unicode コードポイント ⇒ 文字】・ord()【文字 ⇒ Unicode コードポイント】

メモ

構文

chr(i)

戻り値1文字の文字列
iUnicode コードポイント (0 ~ 0x10FFFF)
例外ValueError (Unicode コードポイントが範囲外)
ord(c)

戻り値Unicode コードポイント
c1文字の文字列
例外TypeError (1文字でない)

lst1 = [0x30, 0x41, 0x61, 0x3042, 0x30A2, 0x5B89, 0x963F, 0x200000]
for i in lst1:
    try:
        c = chr(i)
        print("'{}' {}".format(c, hex(i)))
    except Exception as e:
        print("{}\n{}\n{}".format(type(e), e, hex(i)))

print()
lst2 = ['0', 'A', 'a', 'あ', 'ア', '安', '阿', '123']
for c in lst2:
    try:
        i = ord(c)
        print("{} '{}'".format(hex(i), c))
    except Exception as e:
        print("{}\n{}\n'{}'".format(type(e), e, c))
【出力例】
'0' 0x30
'A' 0x41
'a' 0x61
'あ' 0x3042
'ア' 0x30a2
'安' 0x5b89
'阿' 0x963f
<class 'ValueError'>
chr() arg not in range(0x110000)
0x200000

0x30 '0'
0x41 'A'
0x61 'a'
0x3042 'あ'
0x30a2 'ア'
0x5b89 '安'
0x963f '阿'
<class 'TypeError'>
ord() expected a character, but string of length 3 found
'123'

bin()【2 進文字列変換】・oct()【8 進文字列変換】・hex()【16 進文字列変換】

メモ

  • 整数をプリフィックス付きのn進文字列に変換
    関数備考
    bin()【2 進文字列変換】プリフィックス:0b
    oct()【8 進文字列変換】プリフィックス:0o
    hex()【16 進文字列変換】プリフィックス:0x
    a ~ f は小文字
  • 関連

構文

bin(x)
oct(x)
hex(x)

戻り値プリフィックス付きの 2・8・16 進文字列
x整数値
例外TypeError (整数以外)

lst = [0, 0b11, 0o77, 0xFF, -7, None, "123", 1.23]
for x in lst:
    try:
        b = bin(x)
    except Exception as e:
        b = "変換不可"
        print("{} {}".format(type(e), e))
    try:
        o = oct(x)
    except Exception as e:
        o = "変換不可"
        print("{} {}".format(type(e), e))
    try:
        h = hex(x)
    except Exception as e:
        h = "変換不可"
        print("{} {}".format(type(e), e))
    print("({}) ({}) ({}) ({})".format(b, o, h, x))
【出力例】
(0b0) (0o0) (0x0) (0)
(0b11) (0o3) (0x3) (3)
(0b111111) (0o77) (0x3f) (63)
(0b11111111) (0o377) (0xff) (255)
(-0b111) (-0o7) (-0x7) (-7)
<class 'TypeError'> 'NoneType' object cannot be interpreted as an integer
<class 'TypeError'> 'NoneType' object cannot be interpreted as an integer
<class 'TypeError'> 'NoneType' object cannot be interpreted as an integer
(変換不可) (変換不可) (変換不可) (None)
<class 'TypeError'> 'str' object cannot be interpreted as an integer
<class 'TypeError'> 'str' object cannot be interpreted as an integer
<class 'TypeError'> 'str' object cannot be interpreted as an integer
(変換不可) (変換不可) (変換不可) (123)
<class 'TypeError'> 'float' object cannot be interpreted as an integer
<class 'TypeError'> 'float' object cannot be interpreted as an integer
<class 'TypeError'> 'float' object cannot be interpreted as an integer
(変換不可) (変換不可) (変換不可) (1.23)

ascii()【印字可能文字列変換 (エスケープ)】・repr()【印字可能文字列変換】

メモ

構文

ascii(object)
repr(object)

戻り値印字可能文字列
objectオブジェクト

from datetime import date

lst = [123, "文字列", date(2001, 2, 3)]
for obj in lst:
    a = ascii(obj)
    r = repr(obj)
    s = str(obj)
    print("({}) ({}) ({})".format(a, r, s))
【出力例】
(123) (123) (123)
('\u6587\u5b57\u5217') ('文字列') (文字列)
(datetime.date(2001, 2, 3)) (datetime.date(2001, 2, 3)) (2001-02-03)