Trình chuyển đổi nhị phân sang văn bản

Chuyển đổi tức thì giữa nhị phân và văn bản.

Không dữ liệu nào rời khỏi thiết bị của bạn

Về mã hóa nhị phân

Nhị phân là ngôn ngữ cơ bản của máy tính · mỗi ký tự, số và lệnh cuối cùng được đại diện bằng một chuỗi 0 và 1. Trong tiêu chuẩn ASCII, mỗi ký tự tương ứng với một giá trị nhị phân 7 bit (thường được hiển thị ở 8 bit với một số 0 ở đầu). Ví dụ, chữ «A» bằng 01000001 (thập phân 65).

Công cụ này chuyển đổi giữa văn bản có thể đọc được và biểu diễn nhị phân của nó. Nó hỗ trợ toàn bộ phạm vi ASCII (0-127) cho nhị phân→văn bản, và chuyển đổi mỗi ký tự thành tương đương nhị phân 8 bit cho văn bản→nhị phân.

Mã hóa ký tự, biến chữ thành bit

Nhị phân là tầng đáy; tầng phía trên là mã hóa ký tự ánh xạ chữ và ký hiệu sang khuôn mẫu bit cụ thể. Mã Baudot (Émile Baudot, phát minh 1870, cấp bằng 1874) là mã hóa văn bản nhị phân được dùng rộng rãi đầu tiên, 5 bit mỗi ký tự, dùng bởi máy điện báo và mạng Telex hơn một thế kỷ. 5 bit chỉ cho 32 mã, buộc Baudot phải dùng ký tự chuyển đổi (một cho chữ, một cho số và dấu câu) để mở rộng tập có thể địa chỉ. ASCII (American Standard Code for Information Interchange) được công bố là ANSI X3.4-1963 ngày 17 tháng 6 năm 1963 bởi American Standards Association. ASCII dùng 7 bit để mã 128 ký tự: mã điều khiển (0-31), dấu câu và chữ số (32-64), chữ hoa (65-90), dấu câu phụ (91-96), chữ thường (97-122), dấu câu cuối (123-127). Độ rộng 7 bit được chọn để tương thích với phần cứng điện báo trên băng giấy đục lỗ. ASCII trở thành mã hóa thống trị trong tiếng Anh suốt hai thập niên kế tiếp; bản sửa kinh điển ANSI X3.4-1986 về cơ bản giống nhau và đó là điều người ta nói "ASCII" hôm nay.

Họ ASCII mở rộng / ISO 8859 (ISO 8859-1 công bố 1987, phần còn lại trong những năm 1990) lấp đầy 128 ký tự trên của một byte 8 bit bằng các bảng chữ cái khu vực: Latin-1 cho ngôn ngữ Tây Âu, Latin-2 cho Đông Âu, Latin-5 cho tiếng Thổ, Cyrillic-1, Greek-1, Arabic-1, Hebrew-1, Thai-1. Điều này tạo ra mười lăm mã hóa 8 bit không tương thích nhau: 0xE9 nghĩa là é trong Latin-1, nhưng một ký tự khác trong Cyrillic-1, không định nghĩa trong ASCII nghiêm, và một ký tự khác nữa trong Mac Roman. Sự lệch lạc này tạo ra điều kiện mojibake nổi tiếng (tiếng Nhật: 文字化け, "biến đổi ký tự", văn bản trông hỏng do mã hóa sai).

Dự án Unicode ra đời để đáp lại. Unicode Consortium được thành lập ngày 3 tháng 1 năm 1991; Unicode 1.0 công bố tháng 10 năm 1991 với khoảng 7.000 ký tự. Với Unicode 16.0 (công bố ngày 10 tháng 9 năm 2024) chuẩn bao gồm 154.998 ký tự trải trên 168 chữ viết. Unicode là hệ thống điểm mã, một định danh số duy nhất cho mỗi ký tự, nhưng nó không trực tiếp là mã hóa nhị phân. Có nhiều mã hóa của Unicode: UTF-32 (4 byte mỗi ký tự, kích thước cố định), UTF-16 (2 hoặc 4 byte, biến đổi) và cái thống trị web hiện đại: UTF-8.

UTF-8 do Ken Thompson cùng Rob Pike thiết kế trên một tấm lót đĩa ở một quán ăn New Jersey vào khoảng ngày 2 tháng 9 năm 1992; Plan 9 chạy nó từ ngày 8 tháng 9. UTF-8 có độ dài biến đổi: 1 byte cho ký tự ASCII (U+0000 đến U+007F), 2 byte cho U+0080 đến U+07FF, 3 byte cho U+0800 đến U+FFFF, 4 byte cho U+10000 đến U+10FFFF. Bit cao của mỗi byte chỉ ra vị trí trong chuỗi nhiều byte (0xxxxxxx = ASCII 1 byte, 110xxxxx = byte đầu của chuỗi 2 byte, 10xxxxxx = byte tiếp tục, v.v.), điều đó làm UTF-8 tự đồng bộ: ta có thể bắt đầu giải mã từ vị trí bất kỳ và tìm lại biên ký tự kế tiếp bằng cách nhìn vài byte sau. UTF-8 cũng tương thích ngược với ASCII: mọi tệp ASCII là tệp UTF-8 hợp lệ. Năm 2026, W3Techs cho biết khoảng 98,9% tổng số trang web khai báo UTF-8 làm mã hóa, đó là mã hóa văn bản toàn cầu áp đảo.

Ví dụ nhị phân ASCII

Một số ký tự ASCII tiêu biểu dưới dạng nhị phân 8 bit (với số 0 dẫn đầu vì ASCII về kỹ thuật là 7 bit, nhưng được căn chỉnh theo byte):

"Hello" trong ASCII trở thành 01001000 01100101 01101100 01101100 01101111, năm byte, một mỗi ký tự. Trong UTF-8 nó giống vậy vì mỗi ký tự ASCII cũng là ký tự UTF-8 hợp lệ một byte. "Café" trong UTF-8 cho 01000011 01100001 01100110 11000011 10101001, bốn ký tự nhưng năm byte, vì é (U+00E9) đòi hai byte (11000011 10101001) trong UTF-8.

Mã hóa nhiều byte của UTF-8, về cơ học

Quy tắc mã hóa UTF-8 dùng các khuôn mẫu bit cao cụ thể để chỉ ra vị trí của byte. 1 byte (dải ASCII U+0000 đến U+007F): 0xxxxxxx, bit cao là 0, 7 bit còn lại là điểm mã. 2 byte (U+0080 đến U+07FF): 110xxxxx 10xxxxxx, byte đầu bắt đầu bằng 110, byte tiếp tục bằng 10; các bit x kết hợp cho điểm mã 11 bit. 3 byte (U+0800 đến U+FFFF): 1110xxxx 10xxxxxx 10xxxxxx, byte đầu bắt đầu bằng 1110, hai byte tiếp tục; điểm mã 16 bit. 4 byte (U+10000 đến U+10FFFF): 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx, bao trùm cả không gian Unicode, kể cả emoji. Chữ Nga п (U+043F) đòi 2 byte trong UTF-8 (11010000 10111111); ký tự Trung Quốc (U+4E2D) đòi 3 byte; emoji 🎉 (U+1F389) đòi 4 byte. Mã hóa văn bản sang nhị phân UTF-8 luôn tạo chuỗi hợp lệ; giải mã đòi kiểm tra rằng các byte tiếp tục mang đúng tiền tố 10 (nếu không đầu vào là UTF-8 không hợp lệ và bộ giải mã thường thay chuỗi sai bằng ký tự thay thế U+FFFD).

Quy ước ký pháp

Văn bản nhị phân xuất hiện trong tự nhiên dưới nhiều quy ước, tất cả chỉ về cùng các byte bên dưới. Byte ngăn cách bằng khoảng trắng: 01001000 01100101 01101100 01101100 01101111, dạng dễ đọc nhất, phổ biến trong tutorial và câu đố. Liên tục không khoảng trắng: 0100100001100101011011000110110001101111, gọn hơn, đòi người đọc biết biên byte mỗi 8 chữ số. Ngăn cách bằng dấu phẩy: 01001000,01100101,01101100,01101100,01101111, phổ biến trong dữ liệu kiểm thử mã hóa CSV. Cặp hex (Base16): 48 65 6c 6c 6f, cùng các byte hiển thị bằng hai chữ số hex thay vì tám chữ số nhị phân; gọn hơn nhiều và phổ biến trong công cụ phía lập trình viên (hexdump, hex editor). Thập phân: 72 101 108 108 111, giá trị nguyên bên dưới của mỗi byte. Công cụ này nhận đầu vào là nhị phân ngăn cách bằng khoảng trắng, dấu phẩy hoặc liên tục cho chuyển nhị phân sang văn bản; nó tạo ra nhị phân 8 bit ngăn cách bằng khoảng trắng cho chuyển văn bản sang nhị phân.

Các sử dụng phổ biến

Cạm bẫy mã hóa cần biết

Mojibake do mã hóa không khớp. Cùng chuỗi byte, được diễn giải theo các mã hóa khác nhau, tạo ra văn bản khác nhau (và thường biến dạng). 0xE9é trong Latin-1 nhưng là khởi đầu của chuỗi UTF-8 không hợp lệ (mọi byte ≥ 0x80 phải là byte tiếp tục hoặc bắt đầu chuỗi nhiều byte). Khi một tệp UTF-8 mở bằng Latin-1, mỗi ký tự UTF-8 nhiều byte trở thành 2 đến 4 ký tự Latin-1 biến dạng, chế độ thất bại kinh điển "Café" → "Café". BOM (byte order mark). Một chuỗi 2 hoặc 3 byte ở đầu tệp Unicode chỉ ra thứ tự byte: UTF-16 little-endian bắt đầu bằng FF FE, UTF-16 big-endian bằng FE FF, BOM UTF-8 (hiếm khi dùng, đôi khi gọi là "UTF-8 with BOM") bằng EF BB BF. BOM giúp phân biệt các mã hóa Unicode nhưng chỉ bắt buộc cho UTF-16 và UTF-32; IETF khuyến cáo không thêm vào tệp UTF-8 vì nó phá các công cụ mong nội dung bình thường ở đầu tệp. Endianness quan trọng cho UTF-16 và UTF-32 (vốn sắp xếp các byte của một đơn vị mã nhiều byte) nhưng không cho UTF-8 (mã hóa thành luồng byte, thứ tự cố định bởi đặc tả, không bởi phần cứng).

Bảng tham khảo ASCII

Quyền riêng tư: vì sao chỉ-trong-trình-duyệt quan trọng ngay cả ở đây

Chuyển đổi nhị phân nghe vô hại, nhưng văn bản đã chuyển đúng là loại điều mà quyền riêng tư quan trọng: câu đố thông điệp ẩn giữa bạn bè, cụm từ bí mật mã hóa cho thí nghiệm steganography, chuỗi nhạy cảm debug cho vấn đề mã hóa, hoặc đơn giản là bất cứ đâu người đọc mong nhị phân là biểu diễn riêng tư. Công cụ này chạy hoàn toàn trong trình duyệt qua JavaScript, hãy kiểm chứng trong tab Network của DevTools trong khi chuyển đổi, hoặc đặt trang offline (chế độ máy bay) sau khi đã tải xong và bộ chuyển đổi vẫn hoạt động. An toàn cho gợi ý câu đố, chuỗi nhạy cảm để debug, hoặc bất kỳ văn bản nào bạn không muốn bị sao vào ổ cứng của người lạ.

Câu hỏi thường gặp

Đầu vào nhị phân phải có định dạng nào?

Nhập các giá trị nhị phân 8 bit phân tách bởi khoảng trắng (vd: «01001000 01101001»). Công cụ cũng chấp nhận các giá trị không có khoảng trắng nếu mỗi byte là chính xác 8 chữ số, hoặc phân tách bằng dấu phẩy.

Nó có hỗ trợ emoji hoặc ký tự không phải Latin không?

Hướng văn bản→nhị phân hỗ trợ bất kỳ ký tự Unicode nào · mỗi ký tự được phát triển trong biểu diễn nhị phân đầy đủ trong mã hóa UTF-8. Đối với nhị phân→văn bản, mỗi nhóm 8 bit được giải mã như một byte ASCII (0-255).

Tại sao 8 chữ số mỗi ký tự?

Mỗi nhóm 8 chữ số nhị phân (bit) đại diện một byte. ASCII sử dụng 7 bit (giá trị 0-127) nhưng thường được hiển thị ở 8 bit với một số 0 ở đầu. Một byte có thể đại diện 256 giá trị khác nhau (0-255), bao phủ tất cả các ký tự bàn phím tiêu chuẩn.

Nhị phân thực sự đến từ đâu?

Ý tưởng toán học có trước máy tính 250 năm. Gottfried Wilhelm Leibniz đã viết mô tả phương Tây chính thức đầu tiên về số học nhị phân năm 1703 ("Explication de l'Arithmétique Binaire"), một phần được truyền cảm hứng từ các quẻ trong Kinh Dịch Trung Quốc. Laws of Thought của George Boole (1854) cho nhị phân các nền tảng đại số (AND, OR, NOT). Luận văn của Claude Shannon ở MIT (1937) nối đại số Boole với mạch chuyển tiếp điện, khoảnh khắc thành lập của điện tử số. Các máy tính nhị phân điện tử đầu tiên đến cuối thập niên 1940 (Manchester Baby tháng 6 năm 1948, EDSAC tháng 5 năm 1949).

Khác biệt giữa ASCII và UTF-8 là gì?

ASCII (1963) là mã hóa độ rộng cố định 7 bit bao gồm 128 ký tự: bảng chữ tiếng Anh cơ bản, chữ số, dấu câu thông dụng, mã điều khiển. UTF-8 (Thompson + Pike, 1992) là mã hóa độ dài biến đổi của toàn bộ chuẩn Unicode (~155.000 ký tự kể từ Unicode 16.0 tháng 9 năm 2024). UTF-8 tương thích ngược với ASCII: mọi chuỗi byte ASCII hợp lệ cũng là UTF-8 hợp lệ. Khác biệt quan trọng vượt ngoài dải ASCII, é, , 🎉 đều đòi nhiều byte trong UTF-8. Năm 2026, khoảng 98,9% trang web khai báo UTF-8 làm mã hóa (W3Techs).

Các chuyển đổi của tôi có được gửi đi đâu không?

Không. Việc chuyển đổi chạy hoàn toàn trong trình duyệt qua JavaScript. Văn bản và nhị phân bạn dán không bao giờ đi qua mạng, hãy kiểm chứng trong tab Network của DevTools khi bạn bấm Chuyển đổi, hoặc đặt trang offline (chế độ máy bay) sau khi đã tải xong và công cụ vẫn hoạt động.

Công cụ liên quan