Bát phân sang văn bản

Giải mã chuỗi số bát phân thành các ký tự văn bản rõ ràng.

Khi chạy lệnh od -c trên Unix với một tập tin cũ, giá trị byte hiển thị dưới dạng hệ bát phân thay vì thập lục phân. Tên của tiện ích này xuất phát từ cụm từ octal dump, một dấu ấn từ thời kỳ hệ bát phân là phương pháp mặc định để xem xét nội dung tập tin theo từng byte.

Nguồn gốc tên gọi lệnh od trong Unix

Trước khi các bản kết xuất thập lục phân trở thành tiêu chuẩn chung, hệ thống Unix luôn biểu diễn byte thô ở dạng bát phân theo mặc định. Tiện ích od vẫn duy trì cách xử lý này trừ khi bạn chủ động gắn cờ yêu cầu định dạng khác.

Việc đọc kết quả từ công cụ đó đòi hỏi cùng một quy trình chuyển đổi: lấy từng mã bát phân, tính toán thành giá trị byte trong hệ thập phân rồi đối chiếu ký tự văn bản tương ứng.

Cách tính toán chuyển đổi bát phân thủ công

Giả sử lệnh od -c hiển thị mã bát phân 115 cho một byte. Quy đổi sang hệ thập phân bằng phép tính: (1 × 64) + (1 × 8) + 5 = 77. Số thập phân 77 tương ứng với chữ cái M trong bảng mã ASCII, đứng sau ký tự A tại vị trí 65 đúng 12 bậc.

Ký tự khoảng trắng xuất hiện dưới dạng bát phân 040, tương đương (4 × 8) = 32 trong hệ thập phân. Việc ghi nhớ một số giá trị quen thuộc như 040 cho khoảng trắng hoặc 012 cho dấu xuống dòng giúp bạn đọc dữ liệu kết xuất thuận tiện hơn.

Nơi dữ liệu văn bản bát phân vẫn xuất hiện

  • Tiêu đề lưu trữ tar — Định dạng POSIX ustar lưu kích thước tệp và chế độ phân quyền dưới dạng các chữ số bát phân viết thành văn bản thuần túy bên trong phần tiêu đề lưu trữ.
  • Lệnh od trên hệ thống — Định dạng đầu ra mặc định của lệnh vẫn là bát phân, phản ánh thiết kế ban đầu của các công cụ dòng lệnh Unix thuở sơ khai.
  • Chuỗi định dạng kiểu printf — Ký hiệu %o trong ngôn ngữ C cùng nhiều ngôn ngữ kế thừa cho phép xuất số nguyên thành văn bản bát phân để duy trì tính tương thích với các định dạng cũ.

Các bước giải mã mã bát phân sang ký tự

  1. Tách riêng từng nhóm mã bát phân tương ứng với mỗi ký tự.
  2. Quy đổi giá trị sang hệ thập phân bằng cách nhân chữ số đầu với 64, chữ số thứ hai với 8 rồi cộng với chữ số cuối.
  3. Tra cứu số thập phân thu được trong bảng mã ASCII để tìm đúng ký tự.
  4. Nhập toàn bộ chuỗi số vào khung văn bản trên giao diện rồi nhấn nút chuyển đổi để nhận kết quả đã xử lý từ máy chủ.

Câu hỏi thường gặp về chuyển đổi bát phân

Vì sao lệnh od lại ưu tiên hệ bát phân hơn thập lục phân?

Tiện ích này ra đời trước khi dạng kết xuất thập lục phân phổ biến rộng rãi. Thiết lập mặc định phản ánh quy ước thời kỳ đầu của Unix và được giữ nguyên qua nhiều phiên bản.

Văn bản mã hóa bát phân có còn xuất hiện trong tập tin ngày nay không?

Ít khi được dùng làm định dạng chính, nhưng cấu trúc này vẫn tồn tại ở các trường phân quyền và dung lượng bên trong tiêu đề tệp tar chuẩn POSIX.

Ba chữ số bát phân có thể biểu diễn trọn vẹn một byte không?

Có. Ba chữ số bát phân bao quát dải giá trị từ 0 đến 511, hoàn toàn đủ chỗ cho khoảng giá trị từ 0 đến 255 mà một byte đơn lẻ cần.

Tại sao mã bát phân của dấu cách lại là 040?

Bảng mã ASCII quy định giá trị thập phân 32 cho khoảng trắng từ thập niên 1960 theo cách sắp xếp nhóm ký tự điều khiển, và 32 đổi sang hệ bát phân chính là 40.

Công cụ xử lý chuỗi bát phân chứa ký tự nhiều byte như thế nào?

Hệ thống chuyển đổi đúng các giá trị byte bát phân được cung cấp; việc hiển thị thành ký tự hoàn chỉnh phụ thuộc vào bảng mã văn bản được dùng khi tạo dữ liệu gốc.

Cookie
Chúng tôi quan tâm đến dữ liệu của bạn và muốn sử dụng cookie để cải thiện trải nghiệm của bạn.