Массив Int и *Char — C++

Я хочу использовать LZO для сжатия массива целых чисел или байтов. Поэтому мне нужно скопировать массив int в * char, затем я сожму и сохраню в файл. И после того, как мне нужно сделать обратную операцию. Я открою файл, прочитаю его с помощью *Char и распаковаю в массив int.

Я не хочу смотреть в *char, чтобы преобразовать каждый int. Есть ли способ сделать это быстро?

char *entrada;
int *arrayInt2;
int arrayInt1[100];
int ctr;

for(ctr=0;ctr<=100; ctr++)
{
    arrayInt1[ctr] = ctr;
} 

entrada = reinterpret_cast<char *>(arrayInt1);
arrayInt2 = reinterpret_cast<int *>(entrada);

return 0;

Я хочу что-то вроде этого. Это правильно? Спасибо


person p.magalhaes    schedule 13.12.2010    source источник
comment
Что такое *char? Вы имеете в виду char*? Попробуйте начать с хорошей вводной книги по C++.   -  person James McNellis    schedule 13.12.2010


Ответы (1)


Вы можете обрабатывать целочисленный массив непосредственно как (двоичный) символьный буфер и передавать его вашей функции сжатия:

char *buffer = reinterpret_cast<char *>(my_int_array);

И точно так же, когда вы распаковываете в символьный буфер, вы можете использовать его как целочисленный массив:

int *array = reinterpret_cast<int *>(my_char_buffer);

Убедитесь, что вы отслеживаете исходную длину целочисленного массива и не обращаетесь к недопустимым индексам.

person casablanca    schedule 13.12.2010