1. def trans_print(func):
    2. def wrapper(*args):
    3. res = func(*args)
    4. print(f'{int(args[-1])} |{func.__name__}| {res}')
    5. return res
    6. return wrapper

    2 - >10 2- >16

    1. class Trans:
    2. # 2 -> 10
    3. @trans_print
    4. def bin_to_dec(self,bin_str):
    5. bin,dec = list(map(int, bin_str)),0
    6. for i in range(len(bin)):
    7. dec += bin[-i-1] * 2 ** i
    8. return dec
    9. # 2 -> 16
    10. @trans_print
    11. def bin_to_hex(self, bin_str):
    12. # 2 -> 10
    13. bin, dec = list(map(int, bin_str)), 0
    14. for i in range(len(bin)):
    15. dec += bin[-i-1] * 2 ** i
    16. # 10 -> 16
    17. hex = []
    18. while dec / 16 > 0:
    19. hex.append(dec % 16)
    20. dec //= 16
    21. hex.reverse()
    22. # 48 ->0 65 -> A
    23. return ''.join([chr(65 + (_ - 10)) if _ > 9 else chr(_ + 48) for _ in hex])

    10 -> 2 10 -> 16

    1. # 10 -> 2
    2. @trans_print
    3. def dec_to_bin(self, dec_str):
    4. bin, dec = "", int(dec_str)
    5. while dec / 2 > 0:
    6. bin = str(dec % 2) + bin
    7. dec //=2
    8. return int(bin)
    9. # 10 -> 16
    10. @trans_print
    11. def dec_to_hex(self, dec_str):
    12. hex, dec = [], int(dec_str)
    13. while dec / 16 > 0:
    14. hex.append(dec % 16)
    15. dec //= 16
    16. hex.reverse()
    17. # 48 ->0 65 -> A
    18. return ''.join([chr(65 + (_ - 10)) if _ > 9 else chr(_ + 48) for _ in hex])

    16 -> 2 16 -> 10

    1. # 16 -> 2
    2. @trans_print
    3. def hex_to_bin(self, hex_str):
    4. # 16 -> 10
    5. hex = [65 + (ord(_) - 10) if _ in "ABCDEF" else ord(_) - 48 for _ in hex_str.upper()]
    6. dec = 0
    7. for i in range(len(hex)):
    8. dec += hex[-i - 1] * 16 ** i
    9. # 10 -> 2
    10. bin = ""
    11. while dec / 2 > 0:
    12. bin = str(dec % 2) + bin
    13. dec //= 2
    14. return int(bin)
    15. # 16 -> 10
    16. @trans_print
    17. def hex_to_dec(self, hex_str):
    18. hex = [65 + (ord(_) - 10) if _ in "ABCDEF" else ord(_) - 48 for _ in hex_str.upper()]
    19. dec = 0
    20. for i in range(len(hex)):
    21. dec += hex[-i - 1] * 16 ** i
    22. return dec
    1. if __name__ == '__main__':
    2. input_str = input()
    3. trans = Trans()
    4. fs = ['bin_to_dec', 'bin_to_hex', 'dec_to_bin',
    5. 'dec_to_hex', 'hex_to_bin', 'hex_to_dec']
    6. for f in fs:
    7. if hasattr(trans, f):
    8. # 存在方法则调用
    9. getattr(trans,f)(input_str)