59 lines
		
	
	
	
		
			1.4 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable file
		
	
	
	
	
			
		
		
	
	
			59 lines
		
	
	
	
		
			1.4 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable file
		
	
	
	
	
#!/usr/bin/env python3
 | 
						|
 | 
						|
import os.path
 | 
						|
import sys
 | 
						|
 | 
						|
BIN_FMT = 2
 | 
						|
OCT_FMT = 8
 | 
						|
DEC_FMT = 10
 | 
						|
HEX_FMT = 16
 | 
						|
 | 
						|
 | 
						|
def main():
 | 
						|
    if len(sys.argv) < 2:
 | 
						|
        print('Usage: {} <num> [num...]'.format(sys.argv[0]))
 | 
						|
        return -1
 | 
						|
 | 
						|
    root = os.path.splitext(os.path.basename(sys.argv[0]))[0]
 | 
						|
 | 
						|
    if root == 'bin':
 | 
						|
        fmts = {BIN_FMT}
 | 
						|
    elif root == 'oct':
 | 
						|
        fmts = {OCT_FMT}
 | 
						|
    elif root == 'dec':
 | 
						|
        fmts = {DEC_FMT}
 | 
						|
    elif root == 'hex':
 | 
						|
        fmts = {HEX_FMT}
 | 
						|
    else:
 | 
						|
        # All formats
 | 
						|
        fmts = {BIN_FMT, OCT_FMT, DEC_FMT, HEX_FMT}
 | 
						|
 | 
						|
    for n in sys.argv[1:]:
 | 
						|
        print('---')
 | 
						|
        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:
 | 
						|
            if BIN_FMT in fmts:
 | 
						|
                print('bin: {}'.format(bin(num)[2:]))
 | 
						|
            if OCT_FMT in fmts:
 | 
						|
                print('oct: {}'.format(oct(num)[2:]))
 | 
						|
            if DEC_FMT in fmts:
 | 
						|
                print('int: {}'.format(num))
 | 
						|
            if HEX_FMT in fmts:
 | 
						|
                print('hex: {}'.format(hex(num)[2:]))
 | 
						|
 | 
						|
    return 0
 | 
						|
 | 
						|
 | 
						|
if __name__ == '__main__':
 | 
						|
    sys.exit(main())
 |