🔧Toolify

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ânHexKý tựMô tả
00x00NULNUL — Null
10x01SOHSOH — Start of Heading
20x02STXSTX — Start of Text
30x03ETXETX — End of Text
40x04EOTEOT — End of Transmission
50x05ENQENQ — Enquiry
60x06ACKACK — Acknowledge
70x07BELBEL — Bell
80x08BSBS — Backspace
90x09HTHT — Horizontal Tab
100x0ALFLF — Line Feed
110x0BVTVT — Vertical Tab
120x0CFFFF — Form Feed
130x0DCRCR — Carriage Return
140x0ESOSO — Shift Out
150x0FSISI — Shift In
160x10DLEDLE — Data Link Escape
170x11DC1DC1 — Device Control 1 (XON)
180x12DC2DC2 — Device Control 2
190x13DC3DC3 — Device Control 3 (XOFF)
200x14DC4DC4 — Device Control 4
210x15NAKNAK — Negative Acknowledge
220x16SYNSYN — Synchronous Idle
230x17ETBETB — End of Transmission Block
240x18CANCAN — Cancel
250x19EMEM — End of Medium
260x1ASUBSUB — Substitute
270x1BESCESC — Escape
280x1CFSFS — File Separator
290x1DGSGS — Group Separator
300x1ERSRS — Record Separator
310x1FUSUS — Unit Separator
320x20 SP — Space
330x21!
340x22"
350x23#
360x24$
370x25%
380x26&
390x27'
400x28(
410x29)
420x2A*
430x2B+
440x2C,
450x2D-
460x2E.
470x2F/
480x300
490x311
500x322
510x333
520x344
530x355
540x366
550x377
560x388
570x399
580x3A:
590x3B;
600x3C<
610x3D=
620x3E>
630x3F?
640x40@
650x41A
660x42B
670x43C
680x44D
690x45E
700x46F
710x47G
720x48H
730x49I
740x4AJ
750x4BK
760x4CL
770x4DM
780x4EN
790x4FO
800x50P
810x51Q
820x52R
830x53S
840x54T
850x55U
860x56V
870x57W
880x58X
890x59Y
900x5AZ
910x5B[
920x5C\
930x5D]
940x5E^
950x5F_
960x60`
970x61a
980x62b
990x63c
1000x64d
1010x65e
1020x66f
1030x67g
1040x68h
1050x69i
1060x6Aj
1070x6Bk
1080x6Cl
1090x6Dm
1100x6En
1110x6Fo
1120x70p
1130x71q
1140x72r
1150x73s
1160x74t
1170x75u
1180x76v
1190x77w
1200x78x
1210x79y
1220x7Az
1230x7B{
1240x7C|
1250x7D}
1260x7E~
1270x7FDELDEL — 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à &nbsp;) 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:

Thử AI prompts của chúng tôi →