import sys
DIGITS = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
def char_to_num(c):
if "0" <= c <= "9":
return ord(c) - ord("0")
return ord(c.upper()) - ord("A") + 10
def to_decimal(s, base):
n = 0
for c in s:
n = n * base + char_to_num(c)
return n
def from_decimal(n, base):
if n == 0:
return "0"
result = ""
while n > 0:
result = DIGITS[n % base] + result
n //= base
return result
def convert(s, from_base, to_base):
return from_decimal(to_decimal(s, from_base), to_base)
def main():
if len(sys.argv) == 4:
num, from_base, to_base = sys.argv[1], int(sys.argv[2]), int(sys.argv[3])
print(f"{num} ({from_base} 进制) = {convert(num, from_base, to_base)} ({to_base} 进制)")
return
examples = [("255", 10, 16), ("FF", 16, 2), ("11111111", 2, 10)]
for num, fb, tb in examples:
print(f"{num} ({fb} 进制) = {convert(num, fb, tb)} ({tb} 进制)")
if __name__ == "__main__":
main()
aW1wb3J0IHN5cwoKRElHSVRTID0gIjAxMjM0NTY3ODlBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWiIKCgpkZWYgY2hhcl90b19udW0oYyk6CiAgICBpZiAiMCIgPD0gYyA8PSAiOSI6CiAgICAgICAgcmV0dXJuIG9yZChjKSAtIG9yZCgiMCIpCiAgICByZXR1cm4gb3JkKGMudXBwZXIoKSkgLSBvcmQoIkEiKSArIDEwCgoKZGVmIHRvX2RlY2ltYWwocywgYmFzZSk6CiAgICBuID0gMAogICAgZm9yIGMgaW4gczoKICAgICAgICBuID0gbiAqIGJhc2UgKyBjaGFyX3RvX251bShjKQogICAgcmV0dXJuIG4KCgpkZWYgZnJvbV9kZWNpbWFsKG4sIGJhc2UpOgogICAgaWYgbiA9PSAwOgogICAgICAgIHJldHVybiAiMCIKICAgIHJlc3VsdCA9ICIiCiAgICB3aGlsZSBuID4gMDoKICAgICAgICByZXN1bHQgPSBESUdJVFNbbiAlIGJhc2VdICsgcmVzdWx0CiAgICAgICAgbiAvLz0gYmFzZQogICAgcmV0dXJuIHJlc3VsdAoKCmRlZiBjb252ZXJ0KHMsIGZyb21fYmFzZSwgdG9fYmFzZSk6CiAgICByZXR1cm4gZnJvbV9kZWNpbWFsKHRvX2RlY2ltYWwocywgZnJvbV9iYXNlKSwgdG9fYmFzZSkKCgpkZWYgbWFpbigpOgogICAgaWYgbGVuKHN5cy5hcmd2KSA9PSA0OgogICAgICAgIG51bSwgZnJvbV9iYXNlLCB0b19iYXNlID0gc3lzLmFyZ3ZbMV0sIGludChzeXMuYXJndlsyXSksIGludChzeXMuYXJndlszXSkKICAgICAgICBwcmludChmIntudW19ICh7ZnJvbV9iYXNlfSDov5vliLYpID0ge2NvbnZlcnQobnVtLCBmcm9tX2Jhc2UsIHRvX2Jhc2UpfSAoe3RvX2Jhc2V9IOi/m+WItikiKQogICAgICAgIHJldHVybgoKICAgIGV4YW1wbGVzID0gWygiMjU1IiwgMTAsIDE2KSwgKCJGRiIsIDE2LCAyKSwgKCIxMTExMTExMSIsIDIsIDEwKV0KICAgIGZvciBudW0sIGZiLCB0YiBpbiBleGFtcGxlczoKICAgICAgICBwcmludChmIntudW19ICh7ZmJ9IOi/m+WItikgPSB7Y29udmVydChudW0sIGZiLCB0Yil9ICh7dGJ9IOi/m+WItikiKQoKCmlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICBtYWluKCk=