Công cụ chuyển văn bản sang nhị phân / ASCII là gì?
Công cụ này biến mọi đoạn văn bản bạn gõ vào thành dạng nhị phân tương ứng. Máy tính lưu trữ văn bản dưới dạng các con số thông qua một bảng mã ký tự — với các chữ cái tiếng Anh cơ bản, chữ số và dấu câu, bảng mã đó chính là ASCII. Mỗi ký tự được gán cho một mã số, và mã số đó ở đây được viết dưới dạng chuỗi nhị phân 8-bit (gồm tám số 0 và 1). Công cụ cũng hiển thị mã ASCII ở hệ thập phân và giá trị thập lục phân (hex) để bạn dễ dàng đối chiếu kết quả ở bất kỳ hệ cơ số nào.
Cách sử dụng
Hãy gõ hoặc dán văn bản của bạn vào ô nhập liệu rồi nhấn xác nhận. Ô kết quả chính sẽ hiển thị toàn bộ chuỗi nhị phân, mỗi ký tự là một nhóm 8-bit cách nhau bởi dấu cách. Bảng bên dưới liệt kê mã ASCII thập phân và giá trị hex tương ứng, kèm theo số lượng ký tự và tổng số bit. Lưu ý rằng dấu cách và dấu câu cũng được tính là ký tự — chẳng hạn dấu cách có mã ASCII là 32.
Giải thích công thức
Với mỗi ký tự c, ta lấy mã ký tự của nó (chính là giá trị mà hàm charCodeAt trong JavaScript trả về), chuyển số nguyên đó sang hệ cơ số 2, rồi thêm các số 0 vào bên trái cho đủ độ dài 8 chữ số.
$$\text{binary} = \text{pad}_8\big(\text{ASCII}(c)\big)\ \text{for each char } c$$
$$c \rightarrow \text{pad}_8(\text{bin}(\text{charCode}(c)))$$
Ví dụ, chữ A có mã ASCII là 65, ở dạng nhị phân là 1000001, sau khi thêm 0 ở đầu sẽ thành 01000001. Tổng số bit = số lượng ký tự nhân 8.
$$\text{bits} = 8 \times n_{chars}$$
Ví dụ minh họa
Hãy chuyển từ Hi. Ký tự "H" có mã ASCII 72 → nhị phân 01001000 → hex 48. Ký tự "i" có mã ASCII 105 → nhị phân 01101001 → hex 69. Như vậy "Hi" trở thành 01001000 01101001, thập phân 72 105, hex 48 69, sử dụng \(16\) bit cho \(2\) ký tự.
Bảng Tham Chiếu Ký Tự ASCII
ASCII tiêu chuẩn gán cho mỗi ký tự một số từ 0 đến 127. Trong bộ chuyển đổi này, mã thập phân của mỗi ký tự được chuyển đổi thành giá trị nhị phân 8-bit (được đệm bằng các số 0 ở bên trái để lấp đầy 8 bit) và thành giá trị thập lục phân hai chữ số. Bảng dưới đây liệt kê các ký tự có thể in thông dụng.
| Ký tự | Thập phân | Nhị phân 8-bit | Thập lục phân |
|---|---|---|---|
| (khoảng trắng) | 32 | 00100000 | 20 |
| ! | 33 | 00100001 | 21 |
| 0 | 48 | 00110000 | 30 |
| 1 | 49 | 00110001 | 31 |
| 5 | 53 | 00110101 | 35 |
| 9 | 57 | 00111001 | 39 |
| : | 58 | 00111010 | 3A |
| ? | 63 | 00111111 | 3F |
| @ | 64 | 01000000 | 40 |
| A | 65 | 01000001 | 41 |
| B | 66 | 01000010 | 42 |
| M | 77 | 01001101 | 4D |
| Z | 90 | 01011010 | 5A |
| a | 97 | 01100001 | 61 |
| b | 98 | 01100010 | 62 |
| m | 109 | 01101101 | 6D |
| z | 122 | 01111010 | 7A |
Ví dụ, chữ cái viết hoa A có mã thập phân 65, ở dạng nhị phân là 1000001 và khi được đệm thành 8 bit sẽ trở thành 01000001. Là một ký tự đơn lẻ, từ "Hi" mã hóa thành 01001000 01101001.
Giải Thích Các Thuật Ngữ Chính
- Bit
- Đơn vị dữ liệu kỹ thuật số nhỏ nhất, chứa một giá trị duy nhất là 0 hoặc 1 (một chữ số nhị phân).
- Byte
- Một nhóm 8 bit. Một byte có thể biểu diễn 256 giá trị khác biệt (\(2^8 = 256\)), đó là số đủ chính xác để lưu trữ một ký tự ASCII mở rộng.
- ASCII
- Mã Ký tự Chuẩn Mỹ cho Trao đổi Thông tin — một tiêu chuẩn mã hóa ký tự ánh xạ 128 ký tự (mã 0–127), bao gồm chữ cái, chữ số, dấu câu và mã điều khiển, thành các số.
- Unicode
- Tiêu chuẩn ký tự phổ quát mở rộng far beyond ASCII để bao gồm gần như tất cả các hệ thống viết, biểu tượng và emoji. 128 điểm mã Unicode đầu tiên giống hệt với ASCII.
- Điểm mã
- Giá trị số được gán cho một ký tự trong một bộ ký tự. Đối với chữ cái "A", điểm mã là 65 trong cả ASCII lẫn Unicode.
- Nhị phân
- Hệ thống số cơ số 2, chỉ sử dụng các chữ số 0 và 1. Mỗi vị trí đại diện cho một lũy thừa của hai (1, 2, 4, 8, …).
- Thập phân
- Hệ thống số cơ số 10 được sử dụng trong đếm hàng ngày, với các chữ số 0–9 và các vị trí biểu diễn lũy thừa của mười.
- Thập lục phân
- Hệ thống số cơ số 16, sử dụng các chữ số 0–9 và các chữ cái A–F. Một chữ số thập lục phân biểu diễn chính xác 4 bit, vì vậy hai chữ số thập lục phân biểu diễn một byte.
- Đệm / Đệm bên trái
- Thêm các số 0 ở đầu giá trị nhị phân để mỗi ký tự chiếm một chiều rộng đồng nhất. Các byte ASCII được đệm bên trái thành 8 bit — ví dụ, mã 65 (nhị phân 1000001) trở thành 01000001.
Bảng Chuyển Đổi Nhị Phân, Thập Phân & Thập Lục Phân
Bảng dưới đây cho thấy cách cùng một giá trị xuất hiện ở dạng thập phân (cơ số 10), nhị phân (cơ số 2) và thập lục phân (cơ số 16). Lưu ý cách mỗi lũy thừa của hai thêm một chữ số nhị phân nữa, và cách mỗi 4 bit nhị phân ánh xạ rõ ràng thành một chữ số thập lục phân.
| Thập phân | Nhị phân (8-bit) | Thập lục phân |
|---|---|---|
| 0 | 00000000 | 00 |
| 1 | 00000001 | 01 |
| 2 | 00000010 | 02 |
| 3 | 00000011 | 03 |
| 4 | 00000100 | 04 |
| 5 | 00000101 | 05 |
| 6 | 00000110 | 06 |
| 7 | 00000111 | 07 |
| 8 | 00001000 | 08 |
| 9 | 00001001 | 09 |
| 10 | 00001010 | 0A |
| 11 | 00001011 | 0B |
| 12 | 00001100 | 0C |
| 13 | 00001101 | 0D |
| 14 | 00001110 | 0E |
| 15 | 00001111 | 0F |
| 16 | 00010000 | 10 |
| 32 | 00100000 | 20 |
| 64 | 01000000 | 40 |
| 128 | 10000000 | 80 |
| 255 | 11111111 | FF |
Để kiểm tra, thập phân 255 là giá trị lớn nhất một byte duy nhất có thể chứa; dạng thập lục phân của nó là FF và dạng nhị phân của nó là tất cả tám bit được đặt thành 1. Tương tự, thập phân 64 được chuyển đổi thành nhị phân 1000000, được đệm thành 01000000.
Câu hỏi thường gặp
Công cụ có xử lý được ký tự không phải tiếng Anh không? Bảng ASCII chuẩn bao gồm các mã từ 0 đến 127. Các ký tự có mã lớn hơn 127 (như chữ có dấu trong tiếng Việt, emoji) sẽ dùng điểm mã Unicode của chúng, vốn có thể vượt quá 8 bit và không nằm trong bảng ASCII chuẩn.
Vì sao mỗi ký tự dùng 8 bit? Một byte gồm 8 bit, và theo truyền thống ASCII vừa vặn trong một byte, nên việc gom nhóm 8 bit là cách biểu diễn thông dụng.
Tôi có thể chuyển nhị phân ngược lại thành văn bản không? Công cụ này chuyển văn bản sang nhị phân. Để làm ngược lại, bạn hãy tách chuỗi nhị phân thành từng nhóm 8 bit và ánh xạ mỗi giá trị về ký tự ASCII tương ứng.