Chuyển văn bản sang dãy nhị phân và ngược lại, kèm những điều cần biết về chữ tiếng Việt
Công cụ đổi từng ký tự của đoạn văn bản thành dãy bit rồi nối lại theo ký tự phân cách bạn chọn, và làm được cả chiều ngược lại từ dãy nhị phân về chữ. Có bốn kiểu phân cách gồm khoảng trắng, gạch ngang, xuống dòng và nối liền, kèm nút đổi chiều và nút sao chép kết quả.
Tính năng nổi bật
- Đổi văn bản thành dãy nhị phân, mỗi ký tự thành một nhóm bit riêng
- Đổi ngược từ dãy nhị phân về văn bản, tự bỏ qua mọi ký tự không phải 0 hoặc 1
- Bốn kiểu ký tự phân cách gồm khoảng trắng, gạch ngang, xuống dòng và nối liền không phân cách
- Nút đổi chiều chuyển qua lại giữa hai chế độ và xóa sạch nội dung cũ
- Nút xóa nhanh để làm lại từ đầu
- Vùng hiển thị kết quả dùng phông chữ đều nét, tự xuống dòng và cuộn khi dãy dài
- Nút sao chép kết quả kèm dấu báo đã chép
- Chạy hoàn toàn trên trình duyệt, nội dung không được gửi lên máy chủ
Vì sao vẫn cần đọc được dãy nhị phân trong thời đại này
Không mấy ai đọc nhị phân để làm việc hằng ngày, nhưng có ba tình huống mà khả năng đổi qua đổi lại rất có ích. Thứ nhất là học và dạy: khái niệm bit, byte và bảng mã ký tự chỉ trở nên rõ ràng khi người học nhìn thấy chữ A biến thành dãy 01000001 và nhận ra vì sao một byte chứa được đúng 256 giá trị. Thứ hai là gỡ lỗi thật trong công việc kỹ thuật: khi bạn làm với cờ bit, với mặt nạ mạng, với quyền truy cập tệp trên máy chủ hay với giao thức truyền dữ liệu, việc trải một con số ra thành dãy bit giúp nhìn ngay bit nào đang bật. Thứ ba là các trò đố và nội dung giải trí, nơi người ta giấu một câu ngắn dưới dạng dãy số không và một. Điều quan trọng là hiểu đúng bản chất: đây là phép đổi cách biểu diễn chứ không phải mã hóa, bất kỳ ai gặp dãy nhị phân cũng đưa nó về chữ được trong vài giây, nên đừng dùng nó để che giấu thông tin thật sự cần bảo vệ.
Lợi ích khi sử dụng
- Thấy trực tiếp mối liên hệ giữa ký tự và mã số của nó, rất hữu ích khi học lập trình
- Trải một giá trị ra thành dãy bit để kiểm tra nhanh khi làm với cờ bit hoặc mặt nạ mạng
- Đổi được cả hai chiều nên kiểm chứng ngay kết quả vừa tạo
- Bốn kiểu phân cách phù hợp với nhiều cách trình bày khác nhau
- Nội dung không rời trình duyệt nên dùng được cả với chuỗi lấy từ hệ thống nội bộ
Cách chuyển văn bản sang nhị phân
- 1Kiểm tra tiêu đề khung để biết đang ở chiều nào, bấm nút Đổi chiều nếu cần chuyển sang chiều ngược lại.
- 2Ở chiều từ chữ sang nhị phân, gõ hoặc dán nội dung vào ô Văn bản.
- 3Chọn ký tự phân cách; khoảng trắng là lựa chọn an toàn nhất vì giữ được ranh giới giữa các ký tự.
- 4Bấm Chuyển đổi, dãy nhị phân hiện ngay bên dưới trong khung phông chữ đều nét.
- 5Bấm biểu tượng sao chép để lấy kết quả; ở chiều ngược lại, dán dãy nhị phân vào ô rồi bấm Chuyển đổi để nhận lại chữ.
Bit, byte và bảng mã ký tự
Một bit là đơn vị nhỏ nhất, chỉ mang một trong hai giá trị 0 hoặc 1. Tám bit ghép lại thành một byte, và vì mỗi bit có hai khả năng nên một byte biểu diễn được hai mũ tám, tức 256 giá trị khác nhau, đánh số từ 0 tới 255. Để máy tính lưu được chữ, người ta lập bảng quy ước gán mỗi ký tự một con số. Bảng quen thuộc nhất dùng 128 giá trị đầu tiên và gán chữ A là 65, chữ B là 66, chữ a thường là 97, chữ số 0 là 48, còn dấu cách là 32. Từ đó chữ A thành 01000001, chữ a thành 01100001, dấu cách thành 00100000. Bạn sẽ nhận ra ngay một quy luật thú vị khi thử: chữ hoa và chữ thường tương ứng chỉ khác nhau đúng một bit ở vị trí thứ ba từ trái sang, cụ thể là bit mang giá trị 32. Đây không phải trùng hợp mà là thiết kế có chủ ý từ thời bảng mã ra đời, nhờ vậy việc đổi hoa thường trong máy tính chỉ cần bật hoặc tắt một bit thay vì tra bảng. Thử gõ vài cặp chữ vào công cụ và so từng dãy là bạn thấy ngay điều đó.
Chữ tiếng Việt có dấu phá vỡ quy ước tám bit như thế nào
Đây là điểm quan trọng nhất mà bạn nên biết trước khi dùng kết quả ở nơi khác. Công cụ lấy mã số của từng ký tự rồi đổi sang cơ số hai và đệm thêm số 0 cho đủ tám vị trí. Cách này chuẩn xác với các ký tự có mã dưới 256, tức toàn bộ chữ cái Latinh không dấu, chữ số và dấu câu thông dụng. Nhưng chữ tiếng Việt có dấu mang mã số lớn hơn nhiều: chữ ế có mã 7.871, và khi đổi sang cơ số hai nó cho ra dãy mười ba bit là 1111010111111 chứ không phải tám bit. Nghĩa là trong cùng một chuỗi kết quả, các ký tự không dấu chiếm tám vị trí còn các ký tự có dấu chiếm mười ba hoặc mười bốn vị trí, độ dài không đồng đều. Điều này khiến chuỗi vẫn giải ngược đúng bằng chính công cụ này khi có ký tự phân cách, nhưng sẽ không khớp nếu bạn đưa sang một hệ thống khác vốn mong đợi dãy byte theo chuẩn mã hóa UTF-8. Theo chuẩn đó, chữ ế được lưu bằng ba byte và cho ra dãy hoàn toàn khác. Vì vậy với văn bản tiếng Việt có dấu, hãy coi kết quả ở đây là biểu diễn mã ký tự chứ không phải dãy byte thật của tệp.
Quy tắc giải ngược và vì sao đừng chọn kiểu nối liền
Khi chuyển từ nhị phân về chữ, công cụ làm hai bước. Bước một, nó thay mọi ký tự không phải số 0 hoặc số 1 bằng khoảng trắng; nghĩa là dấu gạch ngang, dấu chấm, chữ cái hay bất cứ thứ gì lọt vào đều được coi là ranh giới chứ không gây lỗi. Đây là lý do bạn dán một dãy nhị phân sao chép từ nguồn nào cũng thường ra kết quả đúng, kể cả khi nó lẫn dấu phẩy hay xuống dòng. Bước hai, nó cắt chuỗi tại các khoảng trắng, đổi từng nhóm bit về số rồi tra ra ký tự tương ứng. Chính vì quy tắc này mà kiểu phân cách nối liền không có gì ở giữa là lựa chọn cần cân nhắc: chuỗi kết quả trông gọn nhưng khi đưa ngược lại, công cụ chỉ thấy một dãy bit khổng lồ liền mạch và không có cách nào biết nên cắt ở đâu, nên nó cố đổi cả dãy thành một con số duy nhất và cho ra ký tự vô nghĩa. Kiểu nối liền chỉ nên dùng khi bạn cần một chuỗi để trình bày, còn nếu chuỗi cần được đọc ngược lại thì hãy giữ khoảng trắng, đây cũng là quy ước phổ biến nhất khi người ta viết nhị phân.
Nhị phân xuất hiện ở đâu trong công việc thật
Quyền truy cập tệp trên máy chủ chạy hệ Linux là ví dụ gần gũi nhất. Con số 755 mà bạn hay gặp thực chất là ba nhóm ba bit viết ở cơ số tám: 7 là 111 nghĩa là chủ sở hữu được đọc, ghi và chạy; 5 là 101 nghĩa là nhóm và người khác được đọc và chạy nhưng không được ghi. Nhìn ra dãy bit là hiểu ngay vì sao 644 lại phù hợp cho tệp còn 755 phù hợp cho thư mục. Ví dụ thứ hai là mạng máy tính: mặt nạ mạng viết dạng 255.255.255.0 chính là hai mươi bốn bit đầu bằng 1 và tám bit cuối bằng 0, đó cũng là lý do người ta viết tắt thành gạch chéo hai mươi bốn, và từ đó tính ra dải mạng chứa được 254 địa chỉ dùng được. Ví dụ thứ ba là cờ bit trong lập trình: thay vì lưu tám biến đúng sai riêng lẻ, người ta gói cả tám vào một byte, mỗi bit là một tùy chọn, rồi dùng phép toán trên bit để bật tắt từng cái. Trong cả ba trường hợp, việc trải con số ra thành dãy bit để nhìn là thao tác chẩn đoán nhanh nhất.
Đây không phải mã hóa, và vài cách dùng cho việc dạy học
Cần nhắc lại vì có người vẫn nhầm: đổi sang nhị phân là đổi cách viết cùng một thông tin, không có khóa bí mật nào và ai cũng đảo ngược được. Đưa mật khẩu hay số tài khoản sang nhị phân rồi lưu lại không bảo vệ được gì cả. Nếu bạn cần thứ mà người khác không đọc được nếu không có khóa, hãy dùng công cụ mã hóa thật. Ở chiều ngược lại, chính vì dễ đảo ngược mà nhị phân rất hợp làm công cụ dạy học. Vài bài tập gợi ý: cho học sinh gõ tên mình rồi đếm xem hết bao nhiêu byte và giải thích vì sao tên có dấu lại tốn nhiều hơn; cho gõ lần lượt A, B, C rồi quan sát dãy bit tăng dần đúng như đếm số; cho gõ cặp A và a để phát hiện quy luật chỉ khác nhau một bit; cho đổi ngược một dãy nhị phân giấu sẵn một câu ngắn để thấy quy trình hai chiều. Với người tự học lập trình, một bài tập hữu ích khác là gõ chuỗi 00110001 rồi nhận ra nó cho ra ký tự chữ số 1 chứ không phải giá trị số 1, đây chính là chỗ mà rất nhiều lỗi lập trình bắt nguồn.
Câu hỏi thường gặp (FAQ)
Vì sao chữ tiếng Việt có dấu lại cho ra dãy dài hơn tám bit?
Vì công cụ đổi mã số của ký tự sang cơ số hai rồi mới đệm cho đủ tám vị trí. Chữ không dấu có mã dưới 256 nên vừa đúng tám bit, còn chữ ế có mã 7.871 nên cần tới mười ba bit. Kết quả là trong cùng một chuỗi, độ dài mỗi nhóm không đồng đều.
Kết quả ở đây có giống dãy byte theo chuẩn UTF-8 không?
Không giống với ký tự có dấu. Theo chuẩn UTF-8, chữ ế được lưu bằng ba byte và cho ra dãy hoàn toàn khác. Với ký tự Latinh không dấu thì hai cách trùng nhau. Vì vậy khi cần dãy byte thật của tệp, đừng dùng kết quả ở đây mà hãy dùng công cụ làm việc trực tiếp với byte.
Vì sao chọn kiểu nối liền thì không giải ngược được?
Vì khi giải ngược, công cụ cắt chuỗi tại các khoảng trắng để biết ranh giới giữa các ký tự. Chuỗi nối liền không có ranh giới nào nên nó bị hiểu thành một con số khổng lồ duy nhất và cho ra ký tự vô nghĩa. Hãy dùng khoảng trắng nếu chuỗi cần được đọc ngược lại.
Dán dãy nhị phân lẫn dấu phẩy và xuống dòng có sao không?
Không sao. Trước khi giải, công cụ thay mọi ký tự không phải số 0 hoặc số 1 bằng khoảng trắng, nên dấu phẩy, dấu chấm, chữ cái hay ký tự xuống dòng đều được coi là ranh giới. Nhờ vậy chuỗi sao chép từ nhiều nguồn khác nhau vẫn giải được.
Một byte chứa được bao nhiêu giá trị và vì sao là 256?
Một byte gồm tám bit, mỗi bit có hai khả năng nên tổng số tổ hợp là hai mũ tám, tức 256 giá trị, đánh số từ 0 tới 255. Đây là lý do nhiều giới hạn trong máy tính rơi đúng vào con số 255, chẳng hạn giá trị màu của mỗi kênh trong hệ màu RGB.
Chữ A và chữ a khác nhau ra sao trong nhị phân?
Chữ A có mã 65 cho dãy 01000001, chữ a có mã 97 cho dãy 01100001. Hai dãy chỉ khác đúng một bit ở vị trí mang giá trị 32. Đây là thiết kế có chủ ý từ thời bảng mã ra đời, nhờ vậy việc đổi hoa thường chỉ cần bật hoặc tắt một bit.
Chuyển sang nhị phân có phải là mã hóa không?
Không. Đây chỉ là đổi cách biểu diễn cùng một thông tin, không có khóa bí mật và ai cũng đảo ngược được trong vài giây. Đừng dùng nó để bảo vệ mật khẩu hay dữ liệu nhạy cảm. Nếu cần bảo mật thật, hãy dùng công cụ mã hóa có khóa.
Chuỗi 00110001 cho ra gì và vì sao đáng chú ý?
Nó cho ra ký tự chữ số 1 chứ không phải giá trị số 1, vì trong bảng mã ký tự thì chữ số 0 có mã 48 và chữ số 1 có mã 49. Phân biệt giữa ký tự chữ số và giá trị số là nguồn gốc của rất nhiều lỗi lập trình, nhất là khi xử lý dữ liệu nhập từ biểu mẫu.
Có giới hạn độ dài văn bản không?
Công cụ không đặt mức chặn, nhưng chuỗi nhị phân dài gấp khoảng chín lần văn bản gốc nếu dùng khoảng trắng làm phân cách, nên một đoạn nghìn ký tự sẽ cho ra chuỗi gần chín nghìn ký tự. Với văn bản rất dài, hãy chia thành nhiều đoạn để dễ thao tác.
Nội dung tôi nhập có được gửi đi đâu không?
Không. Mọi phép đổi chạy bằng JavaScript ngay trong trình duyệt, không có yêu cầu mạng nào gửi ra ngoài. Bạn có thể mở thẻ Network trong công cụ dành cho nhà phát triển để tự xác nhận, và dùng được với chuỗi lấy từ hệ thống nội bộ.
Nhị phân dùng để làm gì trong công việc thật?
Nhiều chỗ hơn bạn nghĩ. Quyền truy cập tệp trên máy chủ Linux như 755 thực chất là ba nhóm ba bit; mặt nạ mạng 255.255.255.0 là hai mươi bốn bit bằng 1 rồi tám bit bằng 0; và trong lập trình, người ta gói nhiều tùy chọn đúng sai vào từng bit của một byte để tiết kiệm bộ nhớ.
Đổi chiều rồi mà nội dung cũ bị mất, có lấy lại được không?
Không, nút đổi chiều xóa sạch cả hai ô để tránh nhầm lẫn giữa hai chế độ. Hãy sao chép kết quả trước khi đổi chiều nếu bạn còn cần tới nó. Đây cũng là lý do nên bấm nút sao chép ngay khi có kết quả ưng ý.
Từ khóa liên quan
- chuyển text sang binary
- đổi văn bản sang nhị phân
- giải mã nhị phân sang chữ
- binary to text online
- mã nhị phân là gì
- bảng mã ascii
- một byte bằng bao nhiêu bit
- chữ a trong nhị phân
- nhị phân tiếng việt có dấu
- utf-8 là gì
- chuyển số sang hệ nhị phân
- học lập trình cơ bản về bit
- quyền chmod 755 nghĩa là gì
- mặt nạ mạng 255.255.255.0
- cờ bit trong lập trình
- công cụ chuyển đổi nhị phân miễn phí
- text to binary converter
- giải câu đố nhị phân
- mã hóa và biểu diễn dữ liệu
- bit và byte khác nhau thế nào
