|
Сжатие текстовой строки.
|
|||
---|---|---|---|
#18+
Всем привет! Есть задача в которой требуется сжать текстовую строку. А потом из архивной вернуть исходник. Например существует строка 48 символов: Tupostr150005/Green+Yellow/XXXL(36/32)/000004567 Из нее надо получить строку в приделах 25 символов. Например: %:?12?010101 (не важно какую) А потом из нее вернуть первоначальную. Это вообще возможно? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2012, 13:14 |
|
Сжатие текстовой строки.
|
|||
---|---|---|---|
#18+
В строку из читаемых символов — нет. В бинарник — возможно. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2012, 13:20 |
|
Сжатие текстовой строки.
|
|||
---|---|---|---|
#18+
А вообще чем меньше данных тем меньше сжатие, так что шансов ужать 48 байт почти вдвое очень мало. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2012, 13:24 |
|
Сжатие текстовой строки.
|
|||
---|---|---|---|
#18+
Подскажи каким способом перевести в бинарный? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2012, 13:25 |
|
Сжатие текстовой строки.
|
|||
---|---|---|---|
#18+
AntonariyА вообще чем меньше данных тем меньше сжатие, так что шансов ужать 48 байт почти вдвое очень мало. Да, в этом и состоит основная проблема. Что максимальная строка 65 символов. Есть методы сжатия (например метод Хаффмана), но все они рассчитаны на большое кол-во данных. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2012, 13:28 |
|
Сжатие текстовой строки.
|
|||
---|---|---|---|
#18+
MinchНапример существует строка 48 символов: Tupostr150005/Green+Yellow/XXXL(36/32)/000004567 Например какие строки еще существуют? А может там словарь составить можно, например название цветов, тогда и сильнее можно ужать. А то приведенный пример можно вообще до одного бита ужать, если всего два варианта существуют ) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2012, 13:36 |
|
Сжатие текстовой строки.
|
|||
---|---|---|---|
#18+
К сожалению, строки очень разнообразны, возможно и отсутствие цветов, и сочетание букв ни как не соотносящихся к словами (( ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2012, 13:52 |
|
Сжатие текстовой строки.
|
|||
---|---|---|---|
#18+
Я же не говорил, что словарь должен состоять из осмысленных слов. Там может быть типа "000000", "XXXL" и т.п. Надо взять весь массив возможных вариантов и составить словарь, возможно все-таки удастся сильно жать ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2012, 13:56 |
|
Сжатие текстовой строки.
|
|||
---|---|---|---|
#18+
Еще немножно поясню - если задача сугубо прикладная - словарь может храниться отдельно (то есть как бы быть включенным в алгоритм сжатия/распаковки, а не в файл данных) и тогда можно добиться действительно хороших показателей. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2012, 14:11 |
|
Сжатие текстовой строки.
|
|||
---|---|---|---|
#18+
Если оставить только ПРОПИСНЫЕ латинские буквы, цифры и знаки препинания, чтобы число различных символов не превышало 64, то на каждый символ потребуется 5 байт. В 25 байтах можно хранить 40 символов, без сложных алгоритмов сжатия. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2012, 14:45 |
|
Сжатие текстовой строки.
|
|||
---|---|---|---|
#18+
AntonariyВ строку из читаемых символов — нет. В бинарник — возможно. И это неверный ответ, Антоша... Подумай на что можно заменить строку "АААААААААААААААААААААА", и также подумай над такой штучкой как "Escape character" ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2012, 15:32 |
|
Сжатие текстовой строки.
|
|||
---|---|---|---|
#18+
Подумал. Разумные мысли высказали Shocker.Pro и Казанский. От твоей веет криптонеадекватом. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2012, 16:35 |
|
Сжатие текстовой строки.
|
|||
---|---|---|---|
#18+
Раз уж мы на форуме VB, то речь, очевидно, о (VB) Unicode тексте. Тогда сжатие в 2 раза англоязычного текста в любом регистре с цифрами, скобками и знаками пунктуации, а также восстановление сделать достаточно просто: Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45.
... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2012, 04:19 |
|
Сжатие текстовой строки.
|
|||
---|---|---|---|
#18+
Несложно поддержать и русский текст: Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53.
... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2012, 04:45 |
|
Сжатие текстовой строки.
|
|||
---|---|---|---|
#18+
Привет, Владимир! А разве StrConv не делает то же самое? Используя твой пример Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20.
... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2012, 09:07 |
|
|
start [/forum/topic.php?fid=60&msg=37974418&tid=2157419]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
36ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
60ms |
get tp. blocked users: |
1ms |
others: | 299ms |
total: | 437ms |
0 / 0 |