#!/usr/bin/env python3 # Eryn Wells import argparse import json import os.path import sys FORMATS = { 'bin': 2, 'oct': 8, 'dec': 10, 'hex': 16, } def handle_number(n): try: base = 10 n = n.lower() if n.startswith('0x'): base = 16 if n.startswith('0o'): base = 8 if n.startswith('0b'): base = 2 num = int(n, base=base) except ValueError: print('Error: cannot parse string as int: {}'.format(n)) else: return { 'bin': str(bin(num)[2:]), 'oct': str(oct(num)[2:]), 'dec': str(num), 'hex': str(hex(num)[2:]), } def parse_args(argv, *a, **kw): parser = argparse.ArgumentParser(*a, **kw) parser.add_argument('--ascii', '-a', action='store_true') parser.add_argument('numbers', nargs='+') args = parser.parse_args(argv) return args def main(argv): args = parse_args(argv[1:], prog=argv[0]) output = {} for n in args.numbers: if args.ascii: for c in n: output.setdefault(c, handle_number(str(ord(c)))) else: output.setdefault(n, handle_number(n)) json.dump(output, sys.stdout, indent=2) print('\n') return 0 if __name__ == '__main__': import sys result = main(sys.argv) sys.exit(0 if not result else result)