Bảng ASCII — Thập phân, Hex, Nhị phân và Bát phân
Duyệt tất cả 128 mã ASCII (0–127) với các biểu diễn thập phân, thập lục phân, bát phân và nhị phân. Các ký tự điều khiển (0–31, 127) được tô sáng và gán nhãn với chữ viết tắt chuẩn và tên đầy đủ. Lọc để chỉ hiển thị ký tự in được hoặc chỉ mã điều khiển, và tìm kiếm theo số thập phân, giá trị hex hoặc ký tự.
| Thập phân | Hex | Ký tự | Mô tả |
|---|---|---|---|
| 0 | 0x00 | NUL | NUL — Null |
| 1 | 0x01 | SOH | SOH — Start of Heading |
| 2 | 0x02 | STX | STX — Start of Text |
| 3 | 0x03 | ETX | ETX — End of Text |
| 4 | 0x04 | EOT | EOT — End of Transmission |
| 5 | 0x05 | ENQ | ENQ — Enquiry |
| 6 | 0x06 | ACK | ACK — Acknowledge |
| 7 | 0x07 | BEL | BEL — Bell |
| 8 | 0x08 | BS | BS — Backspace |
| 9 | 0x09 | HT | HT — Horizontal Tab |
| 10 | 0x0A | LF | LF — Line Feed |
| 11 | 0x0B | VT | VT — Vertical Tab |
| 12 | 0x0C | FF | FF — Form Feed |
| 13 | 0x0D | CR | CR — Carriage Return |
| 14 | 0x0E | SO | SO — Shift Out |
| 15 | 0x0F | SI | SI — Shift In |
| 16 | 0x10 | DLE | DLE — Data Link Escape |
| 17 | 0x11 | DC1 | DC1 — Device Control 1 (XON) |
| 18 | 0x12 | DC2 | DC2 — Device Control 2 |
| 19 | 0x13 | DC3 | DC3 — Device Control 3 (XOFF) |
| 20 | 0x14 | DC4 | DC4 — Device Control 4 |
| 21 | 0x15 | NAK | NAK — Negative Acknowledge |
| 22 | 0x16 | SYN | SYN — Synchronous Idle |
| 23 | 0x17 | ETB | ETB — End of Transmission Block |
| 24 | 0x18 | CAN | CAN — Cancel |
| 25 | 0x19 | EM | EM — End of Medium |
| 26 | 0x1A | SUB | SUB — Substitute |
| 27 | 0x1B | ESC | ESC — Escape |
| 28 | 0x1C | FS | FS — File Separator |
| 29 | 0x1D | GS | GS — Group Separator |
| 30 | 0x1E | RS | RS — Record Separator |
| 31 | 0x1F | US | US — Unit Separator |
| 32 | 0x20 | SP — Space | |
| 33 | 0x21 | ! | |
| 34 | 0x22 | " | |
| 35 | 0x23 | # | |
| 36 | 0x24 | $ | |
| 37 | 0x25 | % | |
| 38 | 0x26 | & | |
| 39 | 0x27 | ' | |
| 40 | 0x28 | ( | |
| 41 | 0x29 | ) | |
| 42 | 0x2A | * | |
| 43 | 0x2B | + | |
| 44 | 0x2C | , | |
| 45 | 0x2D | - | |
| 46 | 0x2E | . | |
| 47 | 0x2F | / | |
| 48 | 0x30 | 0 | |
| 49 | 0x31 | 1 | |
| 50 | 0x32 | 2 | |
| 51 | 0x33 | 3 | |
| 52 | 0x34 | 4 | |
| 53 | 0x35 | 5 | |
| 54 | 0x36 | 6 | |
| 55 | 0x37 | 7 | |
| 56 | 0x38 | 8 | |
| 57 | 0x39 | 9 | |
| 58 | 0x3A | : | |
| 59 | 0x3B | ; | |
| 60 | 0x3C | < | |
| 61 | 0x3D | = | |
| 62 | 0x3E | > | |
| 63 | 0x3F | ? | |
| 64 | 0x40 | @ | |
| 65 | 0x41 | A | |
| 66 | 0x42 | B | |
| 67 | 0x43 | C | |
| 68 | 0x44 | D | |
| 69 | 0x45 | E | |
| 70 | 0x46 | F | |
| 71 | 0x47 | G | |
| 72 | 0x48 | H | |
| 73 | 0x49 | I | |
| 74 | 0x4A | J | |
| 75 | 0x4B | K | |
| 76 | 0x4C | L | |
| 77 | 0x4D | M | |
| 78 | 0x4E | N | |
| 79 | 0x4F | O | |
| 80 | 0x50 | P | |
| 81 | 0x51 | Q | |
| 82 | 0x52 | R | |
| 83 | 0x53 | S | |
| 84 | 0x54 | T | |
| 85 | 0x55 | U | |
| 86 | 0x56 | V | |
| 87 | 0x57 | W | |
| 88 | 0x58 | X | |
| 89 | 0x59 | Y | |
| 90 | 0x5A | Z | |
| 91 | 0x5B | [ | |
| 92 | 0x5C | \ | |
| 93 | 0x5D | ] | |
| 94 | 0x5E | ^ | |
| 95 | 0x5F | _ | |
| 96 | 0x60 | ` | |
| 97 | 0x61 | a | |
| 98 | 0x62 | b | |
| 99 | 0x63 | c | |
| 100 | 0x64 | d | |
| 101 | 0x65 | e | |
| 102 | 0x66 | f | |
| 103 | 0x67 | g | |
| 104 | 0x68 | h | |
| 105 | 0x69 | i | |
| 106 | 0x6A | j | |
| 107 | 0x6B | k | |
| 108 | 0x6C | l | |
| 109 | 0x6D | m | |
| 110 | 0x6E | n | |
| 111 | 0x6F | o | |
| 112 | 0x70 | p | |
| 113 | 0x71 | q | |
| 114 | 0x72 | r | |
| 115 | 0x73 | s | |
| 116 | 0x74 | t | |
| 117 | 0x75 | u | |
| 118 | 0x76 | v | |
| 119 | 0x77 | w | |
| 120 | 0x78 | x | |
| 121 | 0x79 | y | |
| 122 | 0x7A | z | |
| 123 | 0x7B | { | |
| 124 | 0x7C | | | |
| 125 | 0x7D | } | |
| 126 | 0x7E | ~ | |
| 127 | 0x7F | DEL | DEL — Delete |
Đang hiển thị 128 trong số 128 mã ASCII
Cách hoạt động
ASCII là gì?
ASCII (American Standard Code for Information Interchange — Mã tiêu chuẩn Mỹ để trao đổi thông tin) là tiêu chuẩn mã hóa ký tự được xuất bản lần đầu năm 1963. Tiêu chuẩn này định nghĩa 128 ký tự: 33 ký tự điều khiển không in được (mã 0–31 và 127) và 95 ký tự in được (mã 32–126), bao gồm chữ cái tiếng Anh hoa và thường, chữ số 0–9 và các dấu câu phổ biến. ASCII đã trở thành nền tảng của hầu hết các mã hóa văn bản hiện đại, bao gồm UTF-8 — tương thích ngược với ASCII cho 128 điểm mã đầu tiên.
Mỗi ký tự ASCII được gán một giá trị số nguyên 7 bit, đó là lý do tại sao bảng kết thúc ở 127 (2⁷ − 1). Khi lưu trong byte 8 bit, bit đầu tiên thường là 0 với ASCII chuẩn. Phạm vi ASCII mở rộng (128–255) không được chuẩn hóa bởi đặc tả gốc và thay đổi theo trang mã — ISO 8859-1, Windows-1252 và các mã hóa tương tự đều định nghĩa tập ký tự khác nhau cho nửa trên của byte.
Ký tự điều khiển (0–31 và 127)
32 mã ASCII đầu tiên và mã 127 là các ký tự điều khiển không in được, được kế thừa từ quy ước máy điện báo. Hầu hết đã lỗi thời trong điện toán hiện đại, nhưng một số vẫn quan trọng: mã 9 (HT, tab ngang), mã 10 (LF, xuống dòng trên Unix/Linux), mã 13 (CR, về đầu dòng, dùng trong ký tự kết thúc dòng Windows dưới dạng CR+LF), mã 27 (ESC, Escape, dùng trong chuỗi thoát terminal) và mã 127 (DEL). Các ký tự này không được hiển thị dưới dạng ký hiệu hình ảnh.
Trên các hệ thống tương tự Unix, bạn có thể tạo ký tự điều khiển trong terminal bằng cách giữ Ctrl và nhấn chữ cái tương ứng: Ctrl+A = SOH (1), Ctrl+C = ETX (3, gửi tín hiệu ngắt), Ctrl+D = EOT (4, báo hiệu kết thúc đầu vào), Ctrl+J = LF (10), Ctrl+M = CR (13), Ctrl+Z = SUB (26, tạm dừng tiến trình trên Unix). Hiểu các mã này rất cần thiết cho I/O mức thấp, chuỗi điều khiển terminal và triển khai giao thức mạng.
ASCII trong lập trình và phát triển web
Trong JavaScript, bạn có thể lấy mã ASCII của một ký tự bằng charCodeAt(0): 'A'.charCodeAt(0) trả về 65. Để chuyển ngược lại, dùng String.fromCharCode(65) để lấy 'A'. Trong Python, ord('A') trả về 65 và chr(65) trả về 'A'. Trong C, giá trị char là số nguyên và có thể dùng trực tiếp trong phép tính: 'A' + 1 bằng 'B'.
Giá trị ASCII là cơ sở của nhiều mẫu lập trình phổ biến. Hiệu giữa chữ hoa và chữ thường luôn là 32: 'a' (97) = 'A' (65) + 32. Các chữ số 0–9 chiếm mã 48–57, vì vậy trừ 48 từ giá trị ASCII của ký tự số sẽ cho ra giá trị số của nó. URL encoding biểu diễn các ký tự không an toàn cho URL dưới dạng %XX trong đó XX là mã ASCII hex, khiến bảng này không thể thiếu khi gỡ lỗi chuỗi URL-encoded và tiêu đề HTTP.
Câu hỏi thường gặp
›Mã ASCII cho Enter / dòng mới là gì?
Ký tự dòng mới (line feed) là mã ASCII 10 (0x0A, LF). Trên Unix/Linux/macOS, dòng mới được biểu diễn bởi LF đơn lẻ. Trên Windows, được biểu diễn bởi CR+LF (mã 13 và 10, tức 0x0D 0x0A). Ký tự carriage return là mã 13 (0x0D, CR). Khi viết mã xử lý văn bản đa nền tảng, hãy luôn xử lý cả ký tự kết thúc dòng LF lẫn CR+LF.
›Mã ASCII của ký tự khoảng trắng là gì?
Ký tự khoảng trắng là mã ASCII 32 (0x20, SP). Đây là ký tự in được đầu tiên trong ASCII. Khoảng trắng không ngắt (dùng trong HTML là ) không thuộc ASCII 7 bit chuẩn — có mã 160 (0xA0) trong ISO 8859-1 và UTF-8 (được mã hóa thành 0xC2 0xA0 trong UTF-8).
›Sự khác biệt giữa ASCII, UTF-8 và Unicode là gì?
ASCII định nghĩa 128 ký tự với mã 7 bit. Unicode là tiêu chuẩn toàn cầu định nghĩa hơn 140.000 ký tự với điểm mã lên đến U+10FFFF. UTF-8 là mã hóa độ rộng biến đổi của Unicode: mã hóa ký tự ASCII (0–127) trong một byte đơn, khiến nó tương thích ngược với ASCII. Các ký tự trên 127 dùng 2–4 byte trong UTF-8. Các hệ thống văn bản hiện đại dùng UTF-8 hoặc UTF-16, nhưng ASCII vẫn quan trọng cho tiêu đề giao thức, định dạng file và hệ thống cũ.
›Làm thế nào để tìm mã ASCII của ký tự trong JavaScript?
Dùng charCodeAt(0): 'A'.charCodeAt(0) trả về 65. Đối với các điểm mã Unicode vượt quá 65535, dùng codePointAt(0). Để chuyển mã ngược lại thành ký tự: String.fromCharCode(65) trả về 'A'. Để hỗ trợ Unicode đầy đủ: String.fromCodePoint(128512) trả về emoji 😀.
›Mã ASCII 0 (NUL) làm gì?
NUL (mã 0) là ký tự null. Trong C và nhiều ngôn ngữ khác, nó được dùng làm ký tự kết thúc chuỗi — chuỗi 'Hello' được lưu trong bộ nhớ dưới dạng các byte 72, 101, 108, 108, 111, 0. Trong cơ sở dữ liệu và định dạng file, NUL có thể xuất hiện làm ký tự phân tách trường hoặc byte đệm. Trong hầu hết các trình soạn thảo văn bản và terminal, NUL không nhìn thấy được và bị bỏ qua, nhưng có thể gây vấn đề khi đọc file nhị phân dưới dạng văn bản.
›Ký tự Escape (ASCII 27) là gì?
ESC (mã 27, 0x1B) là ký tự Escape. Đây là khởi đầu của các chuỗi thoát ANSI/VT100, điều khiển màu sắc terminal và chuyển động con trỏ. Ví dụ, chuỗi ESC[31m thay đổi màu văn bản terminal thành màu đỏ. Trong nhiều ứng dụng, nhấn phím Escape sẽ gửi ký tự này. Nó cũng được dùng trong nhiều định dạng dữ liệu và giao thức truyền thông khác nhau.
›Tại sao chữ hoa A có mã ASCII 65 và chữ thường a có mã 97?
Bảng ASCII được thiết kế sao cho chữ hoa (A=65, B=66, ..., Z=90) và chữ thường (a=97, b=98, ..., z=122) chênh lệch đúng 32. Điều này cho phép chuyển đổi giữa chữ hoa và thường bằng một phép cộng hoặc trừ đơn giản. Để chuyển chữ hoa sang thường trong ASCII: cộng thêm 32 (hoặc đặt bit 5). Để chuyển chữ thường sang hoa: trừ đi 32 (hoặc xóa bit 5). Đó là lý do tại sao phép chuyển đổi chữ hoa/thường theo bit hoạt động trong C: char lower = upper | 0x20.
›Sự khác biệt giữa CR, LF và CRLF là gì?
CR (Carriage Return, mã 13) và LF (Line Feed, mã 10) có nguồn gốc từ quy ước máy đánh chữ và điện báo. CR di chuyển đầu in về đầu dòng; LF tiến sang dòng tiếp theo. Unix/Linux dùng chỉ LF cho dòng mới. Windows dùng CR+LF (cả hai cùng nhau). Mac OS cổ điển (trước OS X) chỉ dùng CR. Hầu hết bộ phân tích cú pháp hiện đại xử lý cả ba loại, nhưng việc trộn lẫn ký tự kết thúc dòng trong các file nguồn gây ra vấn đề với diff kiểm soát phiên bản và một số bộ xử lý văn bản.
Công cụ liên quan
Cập nhật lần cuối: