Массив Int и * Char - C ++ - PullRequest
       8

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

0 голосов
/ 13 декабря 2010

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

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

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;

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

1 Ответ

1 голос
/ 13 декабря 2010

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

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

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

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

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

...