Skip to content

Instantly share code, notes, and snippets.

@nick3499
Last active September 8, 2021 13:58
Show Gist options
  • Save nick3499/92c60ff7b2e9c1a227413f75f3a343e4 to your computer and use it in GitHub Desktop.
Save nick3499/92c60ff7b2e9c1a227413f75f3a343e4 to your computer and use it in GitHub Desktop.
Python: Decimal, Binary, Octal, Hex, ASCII Conversion Chart: hash table, color formatting, f-strings
#!/bin/python3
'''Decimal/Binary/Octal/Hex/ASCII Conversion Chart'''
def generate_chart():
'''Generate ASCII conversion chart.'''
# decimal keys with standard ASCII symbols
ascii_symbols = {
0: 'NUL', 1: 'SOH', 2: 'STX', 3: 'ETX', 4: 'EOT', 5: 'ENQ', 6: 'ACK',
7: 'BEL', 8: 'BS', 9: 'HT', 10: 'LF', 11: 'VT', 12: 'FF', 13: 'CR',
14: 'SO', 15: 'SI', 16: 'DLE', 17: 'DC1', 18: 'DC2', 19: 'DC3',
20: 'DC4', 21: 'NAK', 22: 'SYN', 23: 'ETB', 24: 'CAN', 25: 'EM',
26: 'SUB', 27: 'ESC', 28: 'FS', 29: 'GS', 30: 'RS', 31: 'US', 32: 'SP',
33: '!', 34: '"', 35: '#', 36: '$', 37: '%', 38: '&', 39: "'", 40: '(',
41: ')', 42: '*', 43: '+', 44: ',', 45: '-', 46: '.', 47: '/', 48: '0',
49: '1', 50: '2', 51: '3', 52: '4', 53: '5', 54: '6', 55: '7', 56: '8',
57: '9', 58: ':', 59: ';', 60: '<', 61: '=', 62: '>', 63: '?', 64: '@',
65: 'A', 66: 'B', 67: 'C', 68: 'D', 69: 'E', 70: 'F', 71: 'G', 72: 'H',
73: 'I', 74: 'J', 75: 'K', 76: 'L', 77: 'M', 78: 'N', 79: 'O', 80: 'P',
81: 'Q', 82: 'R', 83: 'S', 84: 'T', 85: 'U', 86: 'V', 87: 'W', 88: 'X',
89: 'Y', 90: 'Z', 91: '[', 92: '\\', 93: ']', 94: '^', 95: '_',
96: '`', 97: 'a', 98: 'b', 99: 'c', 100: 'd', 101: 'e', 102: 'f',
103: 'g', 104: 'h', 105: 'i', 106: 'j', 107: 'k', 108: 'l', 109: 'm',
110: 'n', 111: 'o', 112: 'p', 113: 'q', 114: 'r', 115: 's', 116: 't',
117: 'u', 118: 'v', 119: 'w', 120: 'x', 121: 'y', 122: 'z', 123: '{',
124: '|', 125: '}', 126: '~', 127: 'DEL'
}
# column titles
print('\x1b[38;2;72;201;176mDec Bin Oct Hex ASCII\x1b[0m')
# color format
c_1 = '\x1b[38;2;72;201;176m'
c_2 = '\x1b[38;2;244;208;63m'
c_3 = '\x1b[38;2;220;118;51m'
res = '\x1b[0m'
# generate chart
for number in range(128):
print(f'{c_1}{number:3} \
{c_2}{bin(number)[2:]:0>8} \
{c_3}{oct(number)[2:]:0>3} \
{c_1}{hex(number)[2:]:0>2} \
{c_2}{ascii_symbols[number]}{res}')
if __name__ == '__main__':
generate_chart()
@nick3499
Copy link
Author

nick3499 commented Sep 8, 2021

was able to run the raw Gist right from github.com using Z Shell, so Bash should also work

$ curl -s https://gist.githubusercontent.com/nick3499/92c60ff7b2e9c1a227413f75f3a343e4/raw/5da5a0481ff9383276f81f9afa3a0c6061ef44d0/dec_bin_oct_hex_ascii_chart.py | python3

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment