2014-12-03 33 views
5

Tôi muốn thu nhỏ các chuỗi như -1234B56789C;ABC1D3E/FGH4IJKL khoảng 20 - 25 ký tự phân biệt chữ hoa chữ thường.Làm thế nào để nén chuỗi chữ và số?

Mục tiêu của tôi là có chuỗi ký tự chữ và số tối đa là 16 ký tự. Họ phải vẫn là con người có thể đọc được.

Điều đó có khả thi không? Có các thuật toán có thể được sử dụng để nén chuỗi chữ và số cũng có một số ký tự đặc biệt không?

Cũng phải có khả năng hoàn nguyên quá trình nén.

+1

Tôi thấy dấu chấm phẩy trong chuỗi của bạn. Bạn có thể có những ký tự không phải chữ số và chữ số nào khác? –

+0

Tôi chưa biết chính xác, nhưng chắc chắn: '-; /' – membersound

+1

bạn có thể sử dụng các ký tự chữ thường không? hoặc là các ký tự diễn giải không phân biệt chữ hoa chữ thường ở đâu đó trong luồng công việc của bạn? – cello

Trả lời

2

Tôi nghĩ nói chung điều đó là không thể trừ khi bạn sử dụng một bảng chữ cái đích khác.
Theo như tôi hiểu hiện tại, source alphabet của bạn là 0-9 và A-Z.
Nếu bạn mở rộng target alphabet bạn để bao gồm cũng nhất định N> 0 ký tự khác,
sau đó bạn có thể mã hóa một chuỗi đầu vào với các nhân vật ít mà nó ban đầu có
(vì ví dụ như bạn có thể mã hóa các cặp vợ chồng của chars từ bảng chữ cái nguồn với
một char đơn từ bảng chữ cái đích).

+0

Tôi sẽ sử dụng tùy chọn đó để mã hóa luôn các khối. – membersound

2

Bạn có thể thử phương pháp tiếp cận giống như LZW và tìm các mẫu phổ biến trong thông tin bạn nhập. Ví dụ - nếu bạn thấy rằng "1234" xuất hiện thường xuyên trong các chuỗi của bạn thì bạn có thể mã hóa đó là "Q".

Cách tiếp cận này không thể đạt được yêu cầu của bạn đối với chuỗi được mã hóa 16 ký tự trừ khi bạn có thể chứng minh rằng ánh xạ nén bạn chọn sẽ luôn xuất hiện trong nguồn có đủ đều đặn để đạt độ dài 16 ký tự.

+0

Đó là một ý tưởng tuyệt vời. Nhưng: khi giải nén chuỗi một lần nữa, làm thế nào tôi có thể biết nếu "Q" là một khối chữ số thực hoặc một số thập phân nén? – membersound

+0

@membersound - Bạn phải xây dựng một từ điển - bất kỳ thứ gì trong từ điển được dịch, mọi thứ không được truyền qua không bị ảnh hưởng. Hãy xem cách [LZW] (http://en.wikipedia.org/wiki/Lempel%E2%80%93Ziv%E2%80%93Welch) hoạt động như thế nào. – OldCurmudgeon

Các vấn đề liên quan