Xxencode và xxdecode

Mã hóa văn bản, byte hex hoặc tệp bằng xxencode, hoặc giải mã các khối xxencode về dữ liệu gốc. Bảng ký tự chỉ gồm chữ cái, chữ số, dấu cộng và dấu trừ.

Chạy hoàn toàn trong trình duyệt của bạn. Không có gì được tải lên.

Cách sử dụng

  1. Chọn Mã hóa để tạo một khối xxencode, hoặc Giải mã để chuyển một khối như vậy trở lại thành dữ liệu.
  2. Để nguyên tùy chọn Dòng begin / end ở trạng thái bật và đặt Tên tệp để có một khối hoàn chỉnh, hoặc tắt tùy chọn này để chỉ lấy các dòng dữ liệu.
  3. Nhập hoặc dán dữ liệu đầu vào, hoặc mở một tệp. Kết quả được cập nhật ngay khi bạn gõ.
  4. Sao chép hoặc tải xuống kết quả. Khi giải mã, hãy chọn đầu ra Hex hoặc tải tệp xuống nếu dữ liệu không phải văn bản.

Xxencode là gì?

Xxencode giữ nguyên cấu trúc của uuencode và chỉ thay đổi các ký tự. Mỗi 3 byte vẫn trở thành bốn giá trị 6 bit, mỗi dòng dữ liệu vẫn chứa tối đa 45 byte sau một ký tự chỉ độ dài, và khối dữ liệu vẫn nằm giữa một dòng begin 644 name và một dòng end.

64 giá trị được ánh xạ sang +, -, các chữ số 0-9, các chữ cái hoa A-Z và các chữ cái thường a-z, theo đúng thứ tự đó. Ký tự chỉ độ dài dùng cùng bảng này, nên một dòng đầy đủ 45 byte bắt đầu bằng h, và dòng rỗng trước end chỉ gồm một ký tự +. Vì bố cục giống hệt nhau, đầu ra có cùng kích thước với uuencode: lớn hơn đầu vào khoảng 38%, tính cả các ký tự chỉ độ dài và ký tự xuống dòng.

Vì sao xxencode ra đời

Đầu ra của uuencode chứa đầy dấu câu như [, ], \, ^ và !. Máy tính lớn (mainframe) của IBM dùng EBCDIC thay vì ASCII, và các ký tự này nằm ở những vị trí khác nhau trong các bảng mã EBCDIC khác nhau. Khi thư đi qua các cổng nối giữa mạng ASCII và mạng EBCDIC, những ký tự như vậy có thể bị chuyển đổi sai và tệp bị hỏng.

Chữ cái, chữ số, dấu cộng và dấu trừ đều giống nhau trong mọi bảng mã EBCDIC, nên văn bản xxencode được chuyển đổi chính xác theo cả hai chiều. Về sau MIME cũng đạt được mục tiêu tương tự: Base64 cũng chỉ dùng chữ cái, chữ số và vài ký hiệu giống hệt nhau trong ASCII và EBCDIC. Xxencode chưa bao giờ phổ biến bằng uuencode, và cuối cùng Base64 đã thay thế cả hai.

So sánh uuencode và xxencode

UuencodeXxencode
Ký tựASCII 32 đến 95, backtick thay cho số 0+ - 0-9 A-Z a-z
Dòng đầy đủ 45 byte bắt đầu bằngMh
Dòng cuối trước end`+
An toàn khi qua cổng nối EBCDICKhôngCó

Đặc tả

Bảng ký tự+ - 0-9 A-Z a-z
Kích thước đầu raKhoảng 137%, tính cả ký tự đầu dòng
Phần đệmMỗi dòng tối đa 45 byte
Tiêu chuẩnxxencode
Phân biệt hoa thườngCó

Ví dụ

Đầu vào (UTF-8)Đầu ra
Hello, World!begin 644 data.bin BG4JgP4wg63RjQalY6E++ + end
Base64.isbegin 644 data.bin 7Ea3nNHMo9aZn + end
你好begin 644 data.bin 4t9qUtOKx + end

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

Làm sao phân biệt uuencode và xxencode?
Hãy nhìn vào các dòng dữ liệu. Dòng xxencode chỉ chứa chữ cái, chữ số, dấu cộng và dấu trừ, và các dòng đầy đủ bắt đầu bằng h. Dòng uuencode chứa dấu câu và các dòng đầy đủ bắt đầu bằng M. Nếu giải mã tại đây báo lỗi ký tự không hợp lệ, hãy thử trang uuencode.
Công cụ có ghi dòng begin và end không?
Có, theo mặc định công cụ ghi begin 644 kèm tên tệp bạn nhập, cùng các dòng kết thúc. Hãy tắt tùy chọn này nếu bạn chỉ cần các dòng dữ liệu đã mã hóa.
Tôi có thể giải mã một khối không có dòng begin không?

Có. Khi không có dòng begin, mọi dòng không rỗng đều được giải mã như dữ liệu. Khi có, việc giải mã bắt đầu sau dòng đó và dừng ở dòng end, nên phần văn bản xung quanh được bỏ qua.

Xxencode còn được dùng không?
Hiếm khi. Bạn chủ yếu gặp nó trong các kho lưu trữ thư và tin tức cũ. Với dữ liệu mới, Base64 được hỗ trợ gần như ở mọi nơi và cũng an toàn không kém cho các kênh chỉ truyền văn bản.