A few random tweaks to bin/num
This commit is contained in:
parent
970ed67788
commit
e805062df5
1 changed files with 9 additions and 8 deletions
17
bin/num
17
bin/num
|
@ -13,25 +13,26 @@ FORMATS = {
|
||||||
'hex': 16,
|
'hex': 16,
|
||||||
}
|
}
|
||||||
|
|
||||||
def handle_number(n):
|
def convert_number_to_all_bases(n):
|
||||||
try:
|
try:
|
||||||
base = 10
|
|
||||||
n = n.lower()
|
n = n.lower()
|
||||||
if n.startswith('0x'):
|
if n.startswith('0x'):
|
||||||
base = 16
|
base = 16
|
||||||
if n.startswith('0o'):
|
elif n.startswith('0o'):
|
||||||
base = 8
|
base = 8
|
||||||
if n.startswith('0b'):
|
elif n.startswith('0b'):
|
||||||
base = 2
|
base = 2
|
||||||
|
else:
|
||||||
|
base = 10
|
||||||
num = int(n, base=base)
|
num = int(n, base=base)
|
||||||
except ValueError:
|
except ValueError:
|
||||||
print('Error: cannot parse string as int: {}'.format(n))
|
print(f'Error: cannot parse string as int: {n}', file=sys.stderr)
|
||||||
else:
|
else:
|
||||||
return {
|
return {
|
||||||
'bin': str(bin(num)[2:]),
|
'bin': str(bin(num)[2:]),
|
||||||
'oct': str(oct(num)[2:]),
|
'oct': str(oct(num)[2:]),
|
||||||
'dec': str(num),
|
'dec': str(num),
|
||||||
'hex': str(hex(num)[2:]),
|
'hex': str(hex(num)[2:]).upper(),
|
||||||
}
|
}
|
||||||
|
|
||||||
def parse_args(argv, *a, **kw):
|
def parse_args(argv, *a, **kw):
|
||||||
|
@ -49,9 +50,9 @@ def main(argv):
|
||||||
for n in args.numbers:
|
for n in args.numbers:
|
||||||
if args.ascii:
|
if args.ascii:
|
||||||
for c in n:
|
for c in n:
|
||||||
output.setdefault(c, handle_number(str(ord(c))))
|
output.setdefault(c, convert_number_to_all_bases(str(ord(c))))
|
||||||
else:
|
else:
|
||||||
output.setdefault(n, handle_number(n))
|
output.setdefault(n, convert_number_to_all_bases(n))
|
||||||
|
|
||||||
json.dump(output, sys.stdout, indent=2)
|
json.dump(output, sys.stdout, indent=2)
|
||||||
print('\n')
|
print('\n')
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue