(495) 925-0049, ITShop интернет-магазин 229-0436, Учебный Центр 925-0049
  Главная страница Карта сайта Контакты
Поиск
Вход
Регистрация
Рассылки сайта
 
 
 
 
 

GZIP-упаковка/распаковка в памяти

Источник: realcoding

Для выполнения операций упаковки/распаковки данных прямо в памяти, можно использовать бесплатную библиотеку zlib (формат получаемых данных совместим с gzip).

Ниже приведён исходный текст, демонстрирующий, как это можно сделать.

#include "stdafx.h"
#include "stdio.h"

// подключаем zlib в виде dll
#define zlib_dll 1
#include "gzip\\helper.h"
#pragma comment(lib, "gzip\\zlib.lib")

//////////////////////////////////////////////////////////////////////////

// функция для упаковки буфера
template
t *zlib_compress(t *buf, dword size, dword *result_size=null)
{
ca2gzipt<65536, z_best_compression, z_default_strategy> gzip((char *)buf, size);
if(result_size)
*result_size = gzip.length;
return (t*)gzip.pgzip;
}

// функция для распаковки буфера,
template
t *zlib_uncompress(t *buf, dword size, dword *result_size=null)
{
cgzip2a plain((byte*)buf, size);
if(result_size)
*result_size = plain.length;
return plain.psz;
}

//////////////////////////////////////////////////////////////////////////

int main(int argc, char* argv[])
{
// открываем тестовый файл, определяем его размер
file *f = fopen("test.txt", "r");
if(!f) return 1;
fseek(f, 0, seek_end);
dword size = ftell(f);
fseek(f, 0, seek_set);

// выделяем область памяти для текста из файла, читаем файл
char *text = new char[size ];
fread(text, size, 1, f);
fclose(f);

// упаковываем текст gzip-ом
dword comp_size;
char *compressed = zlib_compress(text, size, &comp_size);

// распаковываем
dword uncomp_size;
char *uncompressed = zlib_uncompress(compressed, comp_size, &uncomp_size);

// выводим результаты... Впечатляет !
printf("source string: %d bytes\n", size);
printf("packed string: %d bytes\n", comp_size);
printf("unpacked string: %d bytes\n", uncomp_size);

// наслаждаемся результатом smile.gif...
while(1);

return 0;

Ссылки по теме


 Распечатать »
 Правила публикации »
  Написать редактору 
 Рекомендовать » Дата публикации: 30.11.2009 
 

Магазин программного обеспечения   WWW.ITSHOP.RU
Microsoft Windows Professional 10, Электронный ключ
Microsoft Office 365 Бизнес. Подписка на 1 рабочее место на 1 год
Microsoft Office 365 Персональный 32-bit/x64. 1 ПК/MAC + 1 Планшет + 1 Телефон. Все языки. Подписка на 1 год.
Microsoft 365 Business Basic (corporate)
Microsoft Office 365 Профессиональный Плюс. Подписка на 1 рабочее место на 1 год
 
Другие предложения...
 
Курсы обучения   WWW.ITSHOP.RU
 
Другие предложения...
 
Магазин сертификационных экзаменов   WWW.ITSHOP.RU
 
Другие предложения...
 
3D Принтеры | 3D Печать   WWW.ITSHOP.RU
 
Другие предложения...
 
Новости по теме
 
Рассылки Subscribe.ru
Информационные технологии: CASE, RAD, ERP, OLAP
Безопасность компьютерных сетей и защита информации
Новости ITShop.ru - ПО, книги, документация, курсы обучения
Программирование на Microsoft Access
CASE-технологии
Новые материалы
Windows и Office: новости и советы
 
Статьи по теме
 
Новинки каталога Download
 
Исходники
 
Документация
 
 



    
rambler's top100 Rambler's Top100