Chuyển đổi nhị phân sang ASCII
Giải mã các chuỗi bit nhị phân thành ký tự văn bản rõ ràng.
Dãy số 01000001 01000010 01000011 thoạt nhìn giống như một chuỗi số vô nghĩa, nhưng khi đối chiếu bảng mã thì đó là ba ký tự liên tiếp: A, B, C. Trình chuyển đổi nhị phân sang ASCII giúp bạn tra cứu ngược từng nhóm bit thành ký tự chữ hoặc số tương ứng.
Quy tắc đổi chữ hoa chữ thường trong nhị phân
Chữ cái in hoa A mang giá trị 65, trong khi chữ thường a mang giá trị 97. Khoảng cách giữa hai giá trị này đúng bằng 32, và 32 trong hệ nhị phân được biểu diễn là 00100000. Điều này tương ứng với đúng một bit duy nhất ở vị trí thứ sáu tính từ bên phải sang.
Nhiều hệ thống máy tính thời kỳ đầu đã tận dụng điểm này: thay vì phải duy trì một bảng tra cứu chữ hoa chữ thường riêng biệt, hệ thống chỉ cần đảo đúng một bit đó để đổi kiểu chữ. Bạn có thể thấy rõ điều này khi đối chiếu dạng nhị phân thô: A là 01000001 và a là 01100001, chỉ khác nhau duy nhất ở chữ số thứ ba từ trái sang.
Lưu ý khi giải mã chuỗi nhị phân sang ASCII
- Đảm bảo chuỗi bit được chia đều thành các nhóm 8 bit (byte); nếu thiếu hoặc thừa một chữ số, toàn bộ các ký tự phía sau sẽ bị lệch hoàn toàn.
- Các giá trị lớn hơn 127 không nằm trong chuẩn ASCII gốc mà thuộc về các bảng mã mở rộng hoặc Unicode.
- Phân biệt các byte khoảng trắng như 00100000 (dấu cách) và 00001010 (ký tự xuống dòng) khi xử lý một chuỗi dài.
- Các chữ số 0 đứng đầu giúp giữ đúng độ dài byte nhưng không làm thay đổi giá trị thực tế; 01000001 và 1000001 đều đại diện cho giá trị 65.
- Dãy byte gồm toàn số không, 00000000, là ký tự null chứ không phải dấu cách có thể nhìn thấy.
Giới hạn phạm vi mã hóa của bảng mã ASCII 7 bit
Cách chuyển đổi này chỉ mang tính tuyệt đối cho chuẩn ASCII 7 bit với phạm vi giá trị từ 0 đến 127. Khi vượt qua mốc này, một byte đơn lẻ không còn đủ để biểu diễn trọn vẹn phần lớn ký tự hiện đại.
Nếu vẫn cố gắng diễn giải các byte từ 128 đến 255 như mã ASCII thông thường, kết quả trên màn hình sẽ xuất hiện các ký tự lỗi hoặc biểu tượng không mong muốn thay vì các chữ cái có dấu hoàn chỉnh.
Câu hỏi thường gặp về chuyển đổi nhị phân sang ASCII
Làm sao nhận biết điểm kết thúc của một ký tự trong chuỗi nhị phân?
Văn bản ASCII chuẩn thường được chia thành từng khối 8 bit cố định. Bạn chỉ cần tách chuỗi nhị phân thành các nhóm tám ký tự tính từ đầu; việc thiếu hoặc thừa một chữ số sẽ làm lệch toàn bộ ký tự kế tiếp.
Tại sao khoảng cách giữa A và a lại là 32?
Bảng mã được thiết kế có chủ đích để việc chuyển đổi qua lại giữa chữ hoa và chữ thường chỉ là thao tác lật một bit thay vì tra bảng. Giá trị 32 là 00100000 trong hệ nhị phân.
Byte 00000000 đại diện cho ký tự gì?
Đó là ký tự null, một mã điều khiển không hiển thị dùng để báo hiệu kết thúc chuỗi trong nhiều ngôn ngữ lập trình. Giá trị này khác hoàn toàn với dấu cách thông thường là 00100000.
Các giá trị nhị phân trên 127 có dùng chuẩn ASCII được không?
Chuẩn ASCII gốc chỉ định nghĩa các mã từ 0 đến 127. Các giá trị từ 128 đến 255 phụ thuộc vào bảng mã mở rộng cụ thể, do đó cùng một giá trị byte có thể cho ra ký tự khác nhau tùy chuẩn áp dụng.
Tại sao có lúc ký tự được biểu diễn bằng 7 chữ số và lúc bằng 8 chữ số?
Bản thân mã ASCII chỉ cần 7 bit để chứa giá trị, nhưng máy tính lưu trữ theo byte 8 bit. Chữ số thứ tám (thường là 0) được thêm vào bên trái để lấp đầy byte, vì vậy cả 1000001 lẫn 01000001 đều chỉ chữ A.