2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему
 
 Изменение сжатых данных без разархивирования.
Сообщение15.05.2013, 11:38 


15/05/13
2
Здравствуйте! Мне нужно сжать данные и впоследствии иметь доступ(считывание/запись) к определенным данным в получившимся архиве без распаковки всего архива. Структура данных такова, что там много повторяющихся последовательностей. Последнее, что сам придумал это в начале применять RLE кодирование. Например AAAAABCDEEE -> 5A -3BCD 3E; минус перед числом означает что последовательность символов идет как есть. И если мне нужно получить доступ к какому-то байту, я простываю от начала до конца все биты и нахожу нужный. Мне этот способ кодирования и доступа к данным не нравится и кажется далеко не оптимальным. Есть ли уже какие-то готовые наработки по этой теме которые можно почитать? Или поделитесь своими соображениями. Заранее спасибо.

 Профиль  
                  
 
 Re: Изменение сжатых данных без разархивирования.
Сообщение15.05.2013, 12:50 
Заслуженный участник


09/09/10
3729
Можно поподробнее, какая у "данных" структура и какой именно доступ вам нужен.

 Профиль  
                  
 
 Re: Изменение сжатых данных без разархивирования.
Сообщение15.05.2013, 15:50 


15/05/13
2
Joker_vD в сообщении #724148 писал(а):
Можно поподробнее, какая у "данных" структура и какой именно доступ вам нужен.

Допустим обычный файл состоит из латинских букв. На подобии AAAAABBBBBBBCCCCCCCCCCCAAAAAAAAAAAAADDDDDKOEDAACEKBBDOOO; Мне нужно упаковать это чтобы занимало меньше места. И мочь обращаться как к обычному массиву в языке C по индексу то есть чтобы возможны были операции: char a = file[20]; file[15] = 'L';

 Профиль  
                  
 
 Re: Изменение сжатых данных без разархивирования.
Сообщение15.05.2013, 16:33 
Аватара пользователя


31/10/08
1244
Внутренний формат должен быть удобным для работы.
Не сжимай.

 Профиль  
                  
 
 Re: Изменение сжатых данных без разархивирования.
Сообщение15.05.2013, 16:51 
Заслуженный участник


27/04/09
28128
oTkPoBeHuE в сообщении #724232 писал(а):
file[15] = 'L';
И тут вам придётся двигать неизвестной длины кусок файла куда-то вправо.

А что, подробнее структуру не опишете?

 Профиль  
                  
 
 Re: Изменение сжатых данных без разархивирования.
Сообщение15.05.2013, 17:18 
Заслуженный участник
Аватара пользователя


06/04/10
3152
oTkPoBeHuE в сообщении #724232 писал(а):
Допустим обычный файл состоит из латинских букв. На подобии AAAAABBBBBBBCCCCCCCCCCCAAAAAAAAAAAAADDDDDKOEDAACEKBBDOOO; Мне нужно упаковать это чтобы занимало меньше места. И мочь обращаться как к обычному массиву в языке C по индексу то есть чтобы возможны были операции: char a = file[20]; file[15] = 'L';

Удобно сжимать кусками с известными диапазонами. Чтобы не дешифровать каждый раз при повторных обращениях, выделить буфер. Это не работает при случайных обращениях.
Вариант - куски по возможности сжимаются в коды фиксированной длины, если её не хватает, то вписывается ссылка, где искать остаток кода.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 6 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group