Skip to content

Instantly share code, notes, and snippets.

@angeloped
Last active November 20, 2024 00:25
Show Gist options
  • Save angeloped/eaa4e1d0d5c1f707a7381d23c3cf9c4f to your computer and use it in GitHub Desktop.
Save angeloped/eaa4e1d0d5c1f707a7381d23c3cf9c4f to your computer and use it in GitHub Desktop.
ASCII Table in JSON Format.
{
"_heading":[["OCT", "HEX", "BIN", "Symbol", "Description"]],
"ASCII":[
["000", "00", "00000000", "NUL", "Null char"],
["001", "01", "00000001", "SOH", "Start of Heading"],
["002", "02", "00000010", "STX", "Start of Text"],
["003", "03", "00000011", "ETX", "End of Text"],
["004", "04", "00000100", "EOT", "End of Transmission"],
["005", "05", "00000101", "ENQ", "Enquiry"],
["006", "06", "00000110", "ACK", "Acknowledgment"],
["007", "07", "00000111", "BEL", "Bell"],
["010", "08", "00001000", "BS", "Back Space"],
["011", "09", "00001001", "HT", "Horizontal Tab"],
["012", "0A", "00001010", "LF", "Line Feed"],
["013", "0B", "00001011", "VT", "Vertical Tab"],
["014", "0C", "00001100", "FF", "Form Feed"],
["015", "0D", "00001101", "CR", "Carriage Return"],
["016", "0E", "00001110", "SO", "Shift Out / X-On"],
["017", "0F", "00001111", "SI", "Shift In / X-Off"],
["020", "10", "00010000", "DLE", "Data Line Escape"],
["021", "11", "00010001", "DC1", "Device Control 1 (oft. XON)"],
["022", "12", "00010010", "DC2", "Device Control 2"],
["023", "13", "00010011", "DC3", "Device Control 3 (oft. XOFF)"],
["024", "14", "00010100", "DC4", "Device Control 4"],
["025", "15", "00010101", "NAK", "Negative Acknowledgement"],
["026", "16", "00010110", "SYN", "Synchronous Idle"],
["027", "17", "00010111", "ETB", "End of Transmit Block"],
["030", "18", "00011000", "CAN", "Cancel"],
["031", "19", "00011001", "EM", "End of Medium"],
["032", "1A", "00011010", "SUB", "Substitute"],
["033", "1B", "00011011", "ESC", "Escape"],
["034", "1C", "00011100", "FS", "File Separator"],
["035", "1D", "00011101", "GS", "Group Separator"],
["036", "1E", "00011110", "RS", "Record Separator"],
["037", "1F", "00011111", "US", "Unit Separator"],
["040", "20", "00100000", " ", "Space"],
["041", "21", "00100001", "!", "Exclamation mark"],
["042", "22", "00100010", "\"", "Double quotes (or speech marks)"],
["043", "23", "00100011", "#", "Number"],
["044", "24", "00100100", "$", "Dollar"],
["045", "25", "00100101", "%", "Per cent sign"],
["046", "26", "00100110", "&", "&", "Ampersand"],
["047", "27", "00100111", "'", "Single quote"],
["050", "28", "00101000", "(", "Open parenthesis (or open bracket)"],
["051", "29", "00101001", ")", "Close parenthesis (or close bracket)"],
["052", "2A", "00101010", "*", "Asterisk"],
["053", "2B", "00101011", "+", "Plus"],
["054", "2C", "00101100", ",", "Comma"],
["055", "2D", "00101101", "-", "Hyphen"],
["056", "2E", "00101110", ".", "Period, dot or full stop"],
["057", "2F", "00101111", "/", "Slash or divide"],
["060", "30", "00110000", "0", "Zero"],
["061", "31", "00110001", "1", "One"],
["062", "32", "00110010", "2", "Two"],
["063", "33", "00110011", "3", "Three"],
["064", "34", "00110100", "4", "Four"],
["065", "35", "00110101", "5", "Five"],
["066", "36", "00110110", "6", "Six"],
["067", "37", "00110111", "7", "Seven"],
["070", "38", "00111000", "8", "Eight"],
["071", "39", "00111001", "9", "Nine"],
["072", "3A", "00111010", ":", "Colon"],
["073", "3B", "00111011", ";", "Semicolon"],
["074", "3C", "00111100", "<", "Less than (or open angled bracket)"],
["075", "3D", "00111101", "=", "Equals"],
["076", "3E", "00111110", ">", "Greater than (or close angled bracket)"],
["077", "3F", "00111111", "?", "Question mark"],
["100", "40", "01000000", "@", "At symbol"],
["101", "41", "01000001", "A", "Uppercase A"],
["102", "42", "01000010", "B", "Uppercase B"],
["103", "43", "01000011", "C", "Uppercase C"],
["104", "44", "01000100", "D", "Uppercase D"],
["105", "45", "01000101", "E", "Uppercase E"],
["106", "46", "01000110", "F", "Uppercase F"],
["107", "47", "01000111", "G", "Uppercase G"],
["110", "48", "01001000", "H", "Uppercase H"],
["111", "49", "01001001", "I", "Uppercase I"],
["112", "4A", "01001010", "J", "Uppercase J"],
["113", "4B", "01001011", "K", "Uppercase K"],
["114", "4C", "01001100", "L", "Uppercase L"],
["115", "4D", "01001101", "M", "Uppercase M"],
["116", "4E", "01001110", "N", "Uppercase N"],
["117", "4F", "01001111", "O", "Uppercase O"],
["120", "50", "01010000", "P", "Uppercase P"],
["121", "51", "01010001", "Q", "Uppercase Q"],
["122", "52", "01010010", "R", "Uppercase R"],
["123", "53", "01010011", "S", "Uppercase S"],
["124", "54", "01010100", "T", "Uppercase T"],
["125", "55", "01010101", "U", "Uppercase U"],
["126", "56", "01010110", "V", "Uppercase V"],
["127", "57", "01010111", "W", "Uppercase W"],
["130", "58", "01011000", "X", "Uppercase X"],
["131", "59", "01011001", "Y", "Uppercase Y"],
["132", "5A", "01011010", "Z", "Uppercase Z"],
["133", "5B", "01011011", "[", "Opening bracket"],
["134", "5C", "01011100", "\\", "Backslash"],
["135", "5D", "01011101", "]", "Closing bracket"],
["136", "5E", "01011110", "^", "Caret - circumflex"],
["137", "5F", "01011111", "_", "Underscore"],
["140", "60", "01100000", "`", "Grave accent"],
["141", "61", "01100001", "a", "Lowercase a"],
["142", "62", "01100010", "b", "Lowercase b"],
["143", "63", "01100011", "c", "Lowercase c"],
["144", "64", "01100100", "d", "Lowercase d"],
["145", "65", "01100101", "e", "Lowercase e"],
["146", "66", "01100110", "f", "Lowercase f"],
["147", "67", "01100111", "g", "Lowercase g"],
["150", "68", "01101000", "h", "Lowercase h"],
["151", "69", "01101001", "i", "Lowercase i"],
["152", "6A", "01101010", "j", "Lowercase j"],
["153", "6B", "01101011", "k", "Lowercase k"],
["154", "6C", "01101100", "l", "Lowercase l"],
["155", "6D", "01101101", "m", "Lowercase m"],
["156", "6E", "01101110", "n", "Lowercase n"],
["157", "6F", "01101111", "o", "Lowercase o"],
["160", "70", "01110000", "p", "Lowercase p"],
["161", "71", "01110001", "q", "Lowercase q"],
["162", "72", "01110010", "r", "Lowercase r"],
["163", "73", "01110011", "s", "Lowercase s"],
["164", "74", "01110100", "t", "Lowercase t"],
["165", "75", "01110101", "u", "Lowercase u"],
["166", "76", "01110110", "v", "Lowercase v"],
["167", "77", "01110111", "w", "Lowercase w"],
["170", "78", "01111000", "x", "Lowercase x"],
["171", "79", "01111001", "y", "Lowercase y"],
["172", "7A", "01111010", "z", "Lowercase z"],
["173", "7B", "01111011", "{", "Opening brace"],
["174", "7C", "01111100", "|", "Vertical bar"],
["175", "7D", "01111101", "}", "Closing brace"],
["176", "7E", "01111110", "~", "Equivalency sign - tilde"],
["177", "7F", "01111111", "", "Delete"],
["200", "80", "10000000", "€", "Euro sign"],
["201", "81", "10000001", " ", ""],
["202", "82", "10000010", "‚", "Single low-9 quotation mark"],
["203", "83", "10000011", "ƒ", "Latin small letter f with hook"],
["204", "84", "10000100", "„", "Double low-9 quotation mark"],
["205", "85", "10000101", "…", "Horizontal ellipsis"],
["206", "86", "10000110", "†", "Dagger"],
["207", "87", "10000111", "‡", "Double dagger"],
["210", "88", "10001000", "ˆ", "Modifier letter circumflex accent"],
["211", "89", "10001001", "‰", "Per mille sign"],
["212", "8A", "10001010", "Š", "Latin capital letter S with caron"],
["213", "8B", "10001011", "‹", "Single left-pointing angle quotation"],
["214", "8C", "10001100", "Œ", "Latin capital ligature OE"],
["215", "8D", "10001101", " ", " "],
["216", "8E", "10001110", "Ž", "Latin capital letter Z with caron"],
["217", "8F", "10001111", " ", " "],
["220", "90", "10010000", " ", " "],
["221", "91", "10010001", "‘", "Left single quotation mark"],
["222", "92", "10010010", "’", "Right single quotation mark"],
["223", "93", "10010011", "“", "Left double quotation mark"],
["224", "94", "10010100", "”", "Right double quotation mark"],
["225", "95", "10010101", "•", "Bullet"],
["226", "96", "10010110", "–", "En dash"],
["227", "97", "10010111", "—", "Em dash"],
["230", "98", "10011000", "˜", "Small tilde"],
["231", "99", "10011001", "™", "Trade mark sign"],
["232", "9A", "10011010", "š", "Latin small letter S with caron"],
["233", "9B", "10011011", "›", "Single right-pointing angle quotation mark"],
["234", "9C", "10011100", "œ", "Latin small ligature oe"],
["235", "9D", "10011101", " ", " "],
["236", "9E", "10011110", "ž", "Latin small letter z with caron"],
["237", "9F", "10011111", "Ÿ", "Latin capital letter Y with diaeresis"],
["240", "A0", "10100000", " ", "Non-breaking space"],
["241", "A1", "10100001", "¡", "Inverted exclamation mark"],
["242", "A2", "10100010", "¢", "Cent sign"],
["243", "A3", "10100011", "£", "Pound sign"],
["244", "A4", "10100100", "¤", "Currency sign"],
["245", "A5", "10100101", "¥", "Yen sign"],
["246", "A6", "10100110", "¦", "Pipe, Broken vertical bar"],
["247", "A7", "10100111", "§", "Section sign"],
["250", "A8", "10101000", "¨", "Spacing diaeresis - umlaut"],
["251", "A9", "10101001", "©", "Copyright sign"],
["252", "AA", "10101010", "ª", "Feminine ordinal indicator"],
["253", "AB", "10101011", "«", "Left double angle quotes"],
["254", "AC", "10101100", "¬", "Not sign"],
["255", "AD", "10101101", "­", "Soft hyphen"],
["256", "AE", "10101110", "®", "Registered trade mark sign"],
["257", "AF", "10101111", "¯", "Spacing macron - overline"],
["260", "B0", "10110000", "°", "Degree sign"],
["261", "B1", "10110001", "±", "Plus-or-minus sign"],
["262", "B2", "10110010", "²", "Superscript two - squared"],
["263", "B3", "10110011", "³", "Superscript three - cubed"],
["264", "B4", "10110100", "´", "Acute accent - spacing acute"],
["265", "B5", "10110101", "µ", "Micro sign"],
["266", "B6", "10110110", "¶", "Pilcrow sign - paragraph sign"],
["267", "B7", "10110111", "·", "Middle dot - Georgian comma"],
["270", "B8", "10111000", "¸", "Spacing cedilla"],
["271", "B9", "10111001", "¹", "Superscript one"],
["272", "BA", "10111010", "º", "Masculine ordinal indicator"],
["273", "BB", "10111011", "»", "Right double angle quotes"],
["274", "BC", "10111100", "¼", "Fraction one quarter"],
["275", "BD", "10111101", "½", "Fraction one half"],
["276", "BE", "10111110", "¾", "Fraction three quarters"],
["277", "BF", "10111111", "¿", "Inverted question mark"],
["300", "C0", "11000000", "À", "Latin capital letter A with grave"],
["301", "C1", "11000001", "Á", "Latin capital letter A with acute"],
["302", "C2", "11000010", "Â", "Latin capital letter A with circumflex"],
["303", "C3", "11000011", "Ã", "Latin capital letter A with tilde"],
["304", "C4", "11000100", "Ä", "Latin capital letter A with diaeresis"],
["305", "C5", "11000101", "Å", "Latin capital letter A with ring above"],
["306", "C6", "11000110", "Æ", "Latin capital letter AE"],
["307", "C7", "11000111", "Ç", "Latin capital letter C with cedilla"],
["310", "C8", "11001000", "È", "Latin capital letter E with grave"],
["311", "C9", "11001001", "É", "Latin capital letter E with acute"],
["312", "CA", "11001010", "Ê", "Latin capital letter E with circumflex"],
["313", "CB", "11001011", "Ë", "Latin capital letter E with diaeresis"],
["314", "CC", "11001100", "Ì", "Latin capital letter I with grave"],
["315", "CD", "11001101", "Í", "Latin capital letter I with acute"],
["316", "CE", "11001110", "Î", "Latin capital letter I with circumflex"],
["317", "CF", "11001111", "Ï", "Latin capital letter I with diaeresis"],
["320", "D0", "11010000", "Ð", "Latin capital letter ETH"],
["321", "D1", "11010001", "Ñ", "Latin capital letter N with tilde"],
["322", "D2", "11010010", "Ò", "Latin capital letter O with grave"],
["323", "D3", "11010011", "Ó", "Latin capital letter O with acute"],
["324", "D4", "11010100", "Ô", "Latin capital letter O with circumflex"],
["325", "D5", "11010101", "Õ", "Latin capital letter O with tilde"],
["326", "D6", "11010110", "Ö", "Latin capital letter O with diaeresis"],
["327", "D7", "11010111", "×", "Multiplication sign"],
["330", "D8", "11011000", "Ø", "Latin capital letter O with slash"],
["331", "D9", "11011001", "Ù", "Latin capital letter U with grave"],
["332", "DA", "11011010", "Ú", "Latin capital letter U with acute"],
["333", "DB", "11011011", "Û", "Latin capital letter U with circumflex"],
["334", "DC", "11011100", "Ü", "Latin capital letter U with diaeresis"],
["335", "DD", "11011101", "Ý", "Latin capital letter Y with acute"],
["336", "DE", "11011110", "Þ", "Latin capital letter THORN"],
["337", "DF", "11011111", "ß", "Latin small letter sharp s - ess-zed"],
["340", "E0", "11100000", "à", "Latin small letter a with grave"],
["341", "E1", "11100001", "á", "Latin small letter a with acute"],
["342", "E2", "11100010", "â", "Latin small letter a with circumflex"],
["343", "E3", "11100011", "ã", "Latin small letter a with tilde"],
["344", "E4", "11100100", "ä", "Latin small letter a with diaeresis"],
["345", "E5", "11100101", "å", "Latin small letter a with ring above"],
["346", "E6", "11100110", "æ", "Latin small letter ae"],
["347", "E7", "11100111", "ç", "Latin small letter c with cedilla"],
["350", "E8", "11101000", "è", "Latin small letter e with grave"],
["351", "E9", "11101001", "é", "Latin small letter e with acute"],
["352", "EA", "11101010", "ê", "Latin small letter e with circumflex"],
["353", "EB", "11101011", "ë", "Latin small letter e with diaeresis"],
["354", "EC", "11101100", "ì", "Latin small letter i with grave"],
["355", "ED", "11101101", "í", "Latin small letter i with acute"],
["356", "EE", "11101110", "î", "Latin small letter i with circumflex"],
["357", "EF", "11101111", "ï", "Latin small letter i with diaeresis"],
["360", "F0", "11110000", "ð", "Latin small letter eth"],
["361", "F1", "11110001", "ñ", "Latin small letter n with tilde"],
["362", "F2", "11110010", "ò", "Latin small letter o with grave"],
["363", "F3", "11110011", "ó", "Latin small letter o with acute"],
["364", "F4", "11110100", "ô", "Latin small letter o with circumflex"],
["365", "F5", "11110101", "õ", "Latin small letter o with tilde"],
["366", "F6", "11110110", "ö", "Latin small letter o with diaeresis"],
["367", "F7", "11110111", "÷", "Division sign"],
["370", "F8", "11111000", "ø", "Latin small letter o with slash"],
["371", "F9", "11111001", "ù", "Latin small letter u with grave"],
["372", "FA", "11111010", "ú", "Latin small letter u with acute"],
["373", "FB", "11111011", "û", "Latin small letter u with circumflex"],
["374", "FC", "11111100", "ü", "Latin small letter u with diaeresis"],
["375", "FD", "11111101", "ý", "Latin small letter y with acute"],
["376", "FE", "11111110", "þ", "Latin small letter thorn"],
["377", "FF", "11111111", "ÿ", "Latin small letter y with diaeresis"]
]
}
@milahu
Copy link

milahu commented Dec 13, 2022

javascript-script to define all ascii chars as constants by their decimal code
useful for writing scanners for lezer-parser

variation with decimal values and shorter names
// based on https://gist.github.com/angeloped/eaa4e1d0d5c1f707a7381d23c3cf9c4f
// ["DEC", "OCT", "HEX", "BIN", "Symbol", "Name"]
const ascii_list = [
  [0, "000", "00", "00000000", "NUL", "Null char"],
  [1, "001", "01", "00000001", "SOH", "Start of Heading"],
  [2, "002", "02", "00000010", "STX", "Start of Text"],
  [3, "003", "03", "00000011", "ETX", "End of Text"],
  [4, "004", "04", "00000100", "EOT", "End of Transmission"],
  [5, "005", "05", "00000101", "ENQ", "Enquiry"],
  [6, "006", "06", "00000110", "ACK", "Acknowledgment"],
  [7, "007", "07", "00000111", "BEL", "Bell"],
  [8, "010", "08", "00001000", "BS", "Back Space"],
  [9, "011", "09", "00001001", "HT", "Horizontal Tab"],
  [10, "012", "0A", "00001010", "LF", "Line Feed"],
  [11, "013", "0B", "00001011", "VT", "Vertical Tab"],
  [12, "014", "0C", "00001100", "FF", "Form Feed"],
  [13, "015", "0D", "00001101", "CR", "Carriage Return"],
  [14, "016", "0E", "00001110", "SO", "Shift Out / X-On"],
  [15, "017", "0F", "00001111", "SI", "Shift In / X-Off"],
  [16, "020", "10", "00010000", "DLE", "Data Line Escape"],
  [17, "021", "11", "00010001", "DC1", "Device Control 1 (oft. XON)"],
  [18, "022", "12", "00010010", "DC2", "Device Control 2"],
  [19, "023", "13", "00010011", "DC3", "Device Control 3 (oft. XOFF)"],
  [20, "024", "14", "00010100", "DC4", "Device Control 4"],
  [21, "025", "15", "00010101", "NAK", "Negative Acknowledgement"],
  [22, "026", "16", "00010110", "SYN", "Synchronous Idle"],
  [23, "027", "17", "00010111", "ETB", "End of Transmit Block"],
  [24, "030", "18", "00011000", "CAN", "Cancel"],
  [25, "031", "19", "00011001", "EM", "End of Medium"],
  [26, "032", "1A", "00011010", "SUB", "Substitute"],
  [27, "033", "1B", "00011011", "ESC", "Escape"],
  [28, "034", "1C", "00011100", "FS", "File Separator"],
  [29, "035", "1D", "00011101", "GS", "Group Separator"],
  [30, "036", "1E", "00011110", "RS", "Record Separator"],
  [31, "037", "1F", "00011111", "US", "Unit Separator"],
  [32, "040", "20", "00100000", " ", "Space"],
  [33, "041", "21", "00100001", "!", "Bang"],
  [34, "042", "22", "00100010", "\"", "Double quotes"],
  [35, "043", "23", "00100011", "#", "Hash"],
  [36, "044", "24", "00100100", "$", "Dollar"],
  [37, "045", "25", "00100101", "%", "Percent"],
  [38, "046", "26", "00100110", "&", "And"],
  [39, "047", "27", "00100111", "'", "Single quote"],
  [40, "050", "28", "00101000", "(", "Open parens"],
  [41, "051", "29", "00101001", ")", "Close parens"],
  [42, "052", "2A", "00101010", "*", "Star"],
  [43, "053", "2B", "00101011", "+", "Plus"],
  [44, "054", "2C", "00101100", ",", "Comma"],
  [45, "055", "2D", "00101101", "-", "Minus"],
  [46, "056", "2E", "00101110", ".", "Dot"],
  [47, "057", "2F", "00101111", "/", "Slash"],
  [48, "060", "30", "00110000", "0", "Zero"],
  [49, "061", "31", "00110001", "1", "One"],
  [50, "062", "32", "00110010", "2", "Two"],
  [51, "063", "33", "00110011", "3", "Three"],
  [52, "064", "34", "00110100", "4", "Four"],
  [53, "065", "35", "00110101", "5", "Five"],
  [54, "066", "36", "00110110", "6", "Six"],
  [55, "067", "37", "00110111", "7", "Seven"],
  [56, "070", "38", "00111000", "8", "Eight"],
  [57, "071", "39", "00111001", "9", "Nine"],
  [58, "072", "3A", "00111010", ":", "Colon"],
  [59, "073", "3B", "00111011", ";", "Semicolon"],
  [60, "074", "3C", "00111100", "<", "Open angle"],
  [61, "075", "3D", "00111101", "=", "EQ"],
  [62, "076", "3E", "00111110", ">", "Close angle"],
  [63, "077", "3F", "00111111", "?", "Question"],
  [64, "100", "40", "01000000", "@", "At"],
  [65, "101", "41", "01000001", "A", "Big A"],
  [66, "102", "42", "01000010", "B", "Big B"],
  [67, "103", "43", "01000011", "C", "Big C"],
  [68, "104", "44", "01000100", "D", "Big D"],
  [69, "105", "45", "01000101", "E", "Big E"],
  [70, "106", "46", "01000110", "F", "Big F"],
  [71, "107", "47", "01000111", "G", "Big G"],
  [72, "110", "48", "01001000", "H", "Big H"],
  [73, "111", "49", "01001001", "I", "Big I"],
  [74, "112", "4A", "01001010", "J", "Big J"],
  [75, "113", "4B", "01001011", "K", "Big K"],
  [76, "114", "4C", "01001100", "L", "Big L"],
  [77, "115", "4D", "01001101", "M", "Big M"],
  [78, "116", "4E", "01001110", "N", "Big N"],
  [79, "117", "4F", "01001111", "O", "Big O"],
  [80, "120", "50", "01010000", "P", "Big P"],
  [81, "121", "51", "01010001", "Q", "Big Q"],
  [82, "122", "52", "01010010", "R", "Big R"],
  [83, "123", "53", "01010011", "S", "Big S"],
  [84, "124", "54", "01010100", "T", "Big T"],
  [85, "125", "55", "01010101", "U", "Big U"],
  [86, "126", "56", "01010110", "V", "Big V"],
  [87, "127", "57", "01010111", "W", "Big W"],
  [88, "130", "58", "01011000", "X", "Big X"],
  [89, "131", "59", "01011001", "Y", "Big Y"],
  [90, "132", "5A", "01011010", "Z", "Big Z"],
  [91, "133", "5B", "01011011", "[", "Open square"],
  [92, "134", "5C", "01011100", "\\", "Backslash"],
  [93, "135", "5D", "01011101", "]", "Close square"],
  [94, "136", "5E", "01011110", "^", "Caret"],
  [95, "137", "5F", "01011111", "_", "Underscore"],
  [96, "140", "60", "01100000", "`", "Accent"],
  [97, "141", "61", "01100001", "a", "Small a"],
  [98, "142", "62", "01100010", "b", "Small b"],
  [99, "143", "63", "01100011", "c", "Small c"],
  [100, "144", "64", "01100100", "d", "Small d"],
  [101, "145", "65", "01100101", "e", "Small e"],
  [102, "146", "66", "01100110", "f", "Small f"],
  [103, "147", "67", "01100111", "g", "Small g"],
  [104, "150", "68", "01101000", "h", "Small h"],
  [105, "151", "69", "01101001", "i", "Small i"],
  [106, "152", "6A", "01101010", "j", "Small j"],
  [107, "153", "6B", "01101011", "k", "Small k"],
  [108, "154", "6C", "01101100", "l", "Small l"],
  [109, "155", "6D", "01101101", "m", "Small m"],
  [110, "156", "6E", "01101110", "n", "Small n"],
  [111, "157", "6F", "01101111", "o", "Small o"],
  [112, "160", "70", "01110000", "p", "Small p"],
  [113, "161", "71", "01110001", "q", "Small q"],
  [114, "162", "72", "01110010", "r", "Small r"],
  [115, "163", "73", "01110011", "s", "Small s"],
  [116, "164", "74", "01110100", "t", "Small t"],
  [117, "165", "75", "01110101", "u", "Small u"],
  [118, "166", "76", "01110110", "v", "Small v"],
  [119, "167", "77", "01110111", "w", "Small w"],
  [120, "170", "78", "01111000", "x", "Small x"],
  [121, "171", "79", "01111001", "y", "Small y"],
  [122, "172", "7A", "01111010", "z", "Small z"],
  [123, "173", "7B", "01111011", "{", "Open curly"],
  [124, "174", "7C", "01111100", "|", "Pipe"],
  [125, "175", "7D", "01111101", "}", "Close curly"],
  [126, "176", "7E", "01111110", "~", "Tilde"],
  [127, "177", "7F", "01111111", "DEL", "Delete"],
]

function toPascalCase(s) {
  return s.replace(/(\w)(\w*)(\s*)/g,
    function(g0,g1,g2){return g1.toUpperCase() + g2.toLowerCase();});
}

for (const [dec, _oct, _hex, _bin, sym, name] of ascii_list) {
  if (48 <= dec && dec < 58) {
    // number
    const n = dec - 48
    console.log(`const Number${n} = ${dec}; // ${name}`)
  }
  else if (sym.length > 1) {
    // control char
    const s = JSON.stringify(String.fromCharCode(dec))
    console.log(`const ${sym} = ${dec}; // ${name}${s.length == 4 ? ` = ${s}` : ""}`)
  }
  else {
    // printable char
    const s = JSON.stringify(String.fromCharCode(dec))
    console.log(`const ${toPascalCase(name)} = ${dec}; // ${s}`)
  }
}
result
const NUL = 0; // Null char
const SOH = 1; // Start of Heading
const STX = 2; // Start of Text
const ETX = 3; // End of Text
const EOT = 4; // End of Transmission
const ENQ = 5; // Enquiry
const ACK = 6; // Acknowledgment
const BEL = 7; // Bell
const BS = 8; // Back Space = "\b"
const HT = 9; // Horizontal Tab = "\t"
const LF = 10; // Line Feed = "\n"
const VT = 11; // Vertical Tab
const FF = 12; // Form Feed = "\f"
const CR = 13; // Carriage Return = "\r"
const SO = 14; // Shift Out / X-On
const SI = 15; // Shift In / X-Off
const DLE = 16; // Data Line Escape
const DC1 = 17; // Device Control 1 (oft. XON)
const DC2 = 18; // Device Control 2
const DC3 = 19; // Device Control 3 (oft. XOFF)
const DC4 = 20; // Device Control 4
const NAK = 21; // Negative Acknowledgement
const SYN = 22; // Synchronous Idle
const ETB = 23; // End of Transmit Block
const CAN = 24; // Cancel
const EM = 25; // End of Medium
const SUB = 26; // Substitute
const ESC = 27; // Escape
const FS = 28; // File Separator
const GS = 29; // Group Separator
const RS = 30; // Record Separator
const US = 31; // Unit Separator
const Space = 32; // " "
const Bang = 33; // "!"
const DoubleQuotes = 34; // "\""
const Hash = 35; // "#"
const Dollar = 36; // "$"
const Percent = 37; // "%"
const And = 38; // "&"
const SingleQuote = 39; // "'"
const OpenParens = 40; // "("
const CloseParens = 41; // ")"
const Star = 42; // "*"
const Plus = 43; // "+"
const Comma = 44; // ","
const Minus = 45; // "-"
const Dot = 46; // "."
const Slash = 47; // "/"
const Number0 = 48; // Zero
const Number1 = 49; // One
const Number2 = 50; // Two
const Number3 = 51; // Three
const Number4 = 52; // Four
const Number5 = 53; // Five
const Number6 = 54; // Six
const Number7 = 55; // Seven
const Number8 = 56; // Eight
const Number9 = 57; // Nine
const Colon = 58; // ":"
const Semicolon = 59; // ";"
const OpenAngle = 60; // "<"
const Eq = 61; // "="
const CloseAngle = 62; // ">"
const Question = 63; // "?"
const At = 64; // "@"
const BigA = 65; // "A"
const BigB = 66; // "B"
const BigC = 67; // "C"
const BigD = 68; // "D"
const BigE = 69; // "E"
const BigF = 70; // "F"
const BigG = 71; // "G"
const BigH = 72; // "H"
const BigI = 73; // "I"
const BigJ = 74; // "J"
const BigK = 75; // "K"
const BigL = 76; // "L"
const BigM = 77; // "M"
const BigN = 78; // "N"
const BigO = 79; // "O"
const BigP = 80; // "P"
const BigQ = 81; // "Q"
const BigR = 82; // "R"
const BigS = 83; // "S"
const BigT = 84; // "T"
const BigU = 85; // "U"
const BigV = 86; // "V"
const BigW = 87; // "W"
const BigX = 88; // "X"
const BigY = 89; // "Y"
const BigZ = 90; // "Z"
const OpenSquare = 91; // "["
const Backslash = 92; // "\\"
const CloseSquare = 93; // "]"
const Caret = 94; // "^"
const Underscore = 95; // "_"
const Accent = 96; // "`"
const SmallA = 97; // "a"
const SmallB = 98; // "b"
const SmallC = 99; // "c"
const SmallD = 100; // "d"
const SmallE = 101; // "e"
const SmallF = 102; // "f"
const SmallG = 103; // "g"
const SmallH = 104; // "h"
const SmallI = 105; // "i"
const SmallJ = 106; // "j"
const SmallK = 107; // "k"
const SmallL = 108; // "l"
const SmallM = 109; // "m"
const SmallN = 110; // "n"
const SmallO = 111; // "o"
const SmallP = 112; // "p"
const SmallQ = 113; // "q"
const SmallR = 114; // "r"
const SmallS = 115; // "s"
const SmallT = 116; // "t"
const SmallU = 117; // "u"
const SmallV = 118; // "v"
const SmallW = 119; // "w"
const SmallX = 120; // "x"
const SmallY = 121; // "y"
const SmallZ = 122; // "z"
const OpenCurly = 123; // "{"
const Pipe = 124; // "|"
const CloseCurly = 125; // "}"
const Tilde = 126; // "~"
const DEL = 127; // Delete

i guess there are a million npm packages for this, but well ...

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