Tôi muốn nén nhiều chuỗi nhỏ (khoảng 75-100 độ dài C# chuỗi). Tại thời điểm từ điển được tạo, tôi đã biết tất cả các chuỗi ngắn (gần một nghìn tỷ). Sẽ không có chuỗi ngắn bổ sung nào trong tương lai. Tôi cần thêm chính xác một chuỗi mà không giải nén các chuỗi khác.Nén các chuỗi nhỏ, với những gì để tạo từ điển bên ngoài?
Bây giờ tôi đang tìm kiếm một thư viện hoặc cách tốt nhất để làm như sau:
- Tạo một từ điển sử dụng tất cả các chuỗi Tôi có
- Sử dụng từ điển này để nén mỗi chuỗi
- một cách để nén một chuỗi bằng từ điển từ 1.
Tôi đã tìm thấy good related question, nhưng điều này không cụ thể. Có lẽ có cái gì đó cho C# Tôi không biết, hoặc một thư viện ưa thích hoặc ai đó đã làm điều đó. Đó là lý do tôi hỏi câu hỏi này.
EDIT:
Với từ điển mà tôi đang nói về những điều như thế này: http://en.wikipedia.org/wiki/Dictionary_coder Nhưng tất cả những gì giúp để có được những chuỗi ngắn hơn. Các chuỗi là các tin nhắn văn bản ngắn trong các ngôn ngữ và URL khác nhau (30%/70%). Không cần các chuỗi được nén là con người có thể đọc được. Nó sẽ được lưu trữ trong các tập tin nhị phân.
Loại dữ liệu nào có trong chuỗi? (chủ yếu là ASCII? Chữ cái ngẫu nhiên? GUID?) – Cameron
Theo từ điển, bạn có nghĩa là lớp .NET 'Dictionary' lưu trữ cặp khóa-giá trị không? Các chuỗi có được sử dụng làm khóa hoặc giá trị trong từ điển của bạn không? Nếu các chuỗi chỉ là giá trị, các phím sẽ là gì? –
chủ yếu là ascii, không phải ngẫu nhiên. Giống như tin nhắn văn bản ngắn, câu và url. – Chris