ALPHABET =('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z')defalphabet2digit(alphabet):"""26進制 -> 10進制"""returnsum(ALPHABET.index(a)*(26** e)for e, a inenumerate(reversed(alphabet)))defdigit2alphabet(digit):"""10進制 -> 26進制"""
mod, remainder =divmod(digit,26)
alphabet = ALPHABET[remainder]while mod:
mod, remainder =divmod(mod,26)
alphabet = ALPHABET[remainder]+ alphabet
return alphabet
for i in('aa','bc','caa'):
d = alphabet2digit(i)
a = digit2alphabet(d)print(d, a, i == a)
二進制⇌十進制
defalphabet2digit(alphabet):"""2進制 -> 10進制"""returnsum(int(a)*(2** e)for e, a inenumerate(reversed(alphabet)))defdigit2alphabet(digit):"""10進制 -> 2進制"""
mod, remainder =divmod(digit,2)
alphabet =str(remainder)while mod:
mod, remainder =divmod(mod,2)
alphabet =str(remainder)+ alphabet
return alphabet
for i in(0,7,100):
a = digit2alphabet(i)
d = alphabet2digit(a)print(d, a, i == d)