Sau khi đọc bình luận của bạn, điều đó nghe có vẻ hợp lý hơn. Tôi chỉ không chắc chắn nếu bạn có ý định mã hóa megabyte dữ liệu như thế này.
Tôi khuyên bạn, dọc theo dòng gợi ý của Oliver, bạn nên tăng mật độ dữ liệu bằng cách mượn một trang từ mật mã của Bacon , mà các băng đảng nhà tù thường sử dụng để mã hóa các tin nhắn ẩn trong các tên lửa được viết theo 2 kiểu chữ viết khác nhau - thường là trên ký tự chữ thường hoặc in so với ký tự chữ thảo, vd
Hey mOM, WHAT's FOR diNNeR TODAY? = ABBBA AAAAA BAAAB BAABA AAAAA
= P A S T A
Tuy nhiên, vì mục tiêu của bạn không phải là bản sao, bạn chỉ cần sử dụng mục tiêu này để mở rộng bộ glyph của mình. Làm điều này, bạn có thể có tới 114 glyphs chỉ bằng cách sử dụng các ký tự chữ và số in chữ thảo hoặc 12996 điểm mã bằng cách sử dụng mã hóa ký tự kép.
Tuy nhiên, vì tất cả số lượng glyph lớn hơn 15 và nhỏ hơn 256 về cơ bản là giống nhau cho một mật mã thẳng của dữ liệu nhị phân (nghĩa là, bạn vẫn sẽ cần 2 ký tự để biểu thị mỗi byte, cung cấp cho bạn mật độ dữ liệu 4 bit cho mỗi ký tự tất cả các trường hợp), bạn có thể sử dụng thêm 98 điểm glyphs / 12740 điểm để phát hiện / sửa lỗi.
Các cách để làm điều này bao gồm:
- Chọn một bộ gồm 256 bộ ký tự dễ đọc / ghi nhất. Nếu bất kỳ kết hợp ký tự nào khác xảy ra, bạn biết đó là lỗi sao chép.
- Sử dụng hai phiên bản của ký tự kết thúc dưới dạng một bit chẵn lẻ.
Tạo 50 bộ glyph 16 ký tự khác nhau. Sau đó, bạn có thể sử dụng chúng để mã hóa dữ liệu sửa lỗi.
Ví dụ: {set 1}{set 1}
3 nibble tiếp theo bằng nhau 0x000
, {set 1}{set 2}
bằng nhau 0x001
, v.v.
Bạn có thể sử dụng điều này để biểu thị 2500+ trong số 4096 giá trị 1,5 byte có thể. Tương tự, bạn có thể sử dụng chỉ 16 bộ để biểu diễn tất cả các giá trị của byte sau, mang lại cho bạn 100% dự phòng mà không làm tăng độ dài dữ liệu được mã hóa của bạn.
Ngoài ra, bạn có thể sử dụng glyphs bổ sung để nén bổ sung:
- Thực hiện mã hóa độ rộng thay đổi bằng cách chọn 98 điểm mã ký tự đơn. Điều này sẽ làm giảm kích thước nội dung được mã hóa trung bình khoảng 20%.
- Thực hiện một cái gì đó tương tự như mã hóa độ dài chạy bằng cách sử dụng các tập hợp glyph hoặc tập hợp glyph khác nhau để biểu diễn các nibble / byte lặp lại. Ví dụ
Ab
= aba
; aB
= abab
; AB
= ababab
...
- Sử dụng các glyphs hoặc điểm mã bổ sung để thể hiện "từ" và "cụm từ" được lặp lại trong dữ liệu của bạn. Mặc dù dữ liệu được nén trước có thể sẽ có mức độ entropy cao, vì vậy tôi không biết hiệu quả của việc này sẽ như thế nào.
Để tiếp tục giảm lỗi sao chép, tôi sẽ hiển thị nội dung được mã hóa theo đường lưới và sao chép vào giấy vẽ biểu đồ. Nếu bạn có thể sử dụng văn phòng phẩm tùy chỉnh có màu sắc cột / hàng xen kẽ hoặc lưới rô theo kiểu bàn cờ với các cột chữ và hàng được đánh số để tra cứu nhanh, điều đó sẽ tăng thêm độ chính xác sao chép.
Bạn cũng có thể kết hợp bố cục lưới xen kẽ với các kiểu ký tự xen kẽ như một hình thức phát hiện lỗi dễ dàng. Tức là nếu các cột lẻ luôn được viết hoa, nếu người chuyển đổi thấy mình viết các chữ cái viết thường trong các cột lẻ, thì họ biết rằng họ đã mắc lỗi và có thể bắt đầu theo dõi lại để xem nó xảy ra ở đâu.
Mặc dù nếu ưu tiên chính của bạn là độ chính xác, tôi sẽ sử dụng mã hóa nhị phân +
mã Hamming . Sử dụng mã Hamming rút gọn (12, 8) trên giấy vẽ đồ thị tiêu chuẩn, bạn có thể chỉ phù hợp với 187 byte, chỉ mã hóa 124 byte dữ liệu. Nhưng nó có thể được sao chép rất nhanh (dấu gạch chéo cho 1, không có gì cho 0) và cung cấp sửa lỗi đơn. Việc xử lý một bit chẵn lẻ bổ sung (13, 8) sẽ cung cấp SECDED (sửa lỗi đơn, phát hiện lỗi kép). Sử dụng mã hamming tiêu chuẩn như (15, 11) hoặc (31, 26), bạn sẽ có được hiệu quả thậm chí tốt hơn với lần lượt là 137 và 156 byte dữ liệu trên mỗi tờ. Thậm chí tỷ lệ mã cao hơn có thể đạt được, tùy thuộc vào mức độ chính xác mà bạn nghĩ rằng người chuyển đổi của bạn có thể.
Mã hóa nhị phân cũng sẽ dễ đọc hơn (to) và OCR / OMR.