Страницы

Поиск по вопросам

понедельник, 8 апреля 2019 г.

Преобразовать char* в массив double [C++]

Здравствуйте, задача состоит в следующем : Изначально нам дан массив double, который нужно зашифровать xor-ом, я привожу массив double к char массиву следующим образом:
unsigned char *char_from_double = reinterpret_cast(&doubleArr);
После этого прохожу по нему xor-ом, и на этом этапе возник вопрос, как его преобразовать обратно из char* в double массив? Просто привести char* к double массиву не получается
Как вариант, отдельно шифровать каждый элемент массива double, и хранить массив массивов char*, где один char* это одно double число, но подозреваю что это не очень хороший вариант


Ответ

Точно так же только наоборот. reinterpret_cast преобразует только укзатель, сам массив остается неизменным. Если у вас алгоритм шифорвания корректный то должно работать так:
double data_1[DATA_SIZE] = {...}; unsigned char * byte_array_1 = reinterpret_cast(&data_1[0]);
auto secret = encrypt(byte_array_1, DATA_SIZE * sizeof(double));
double data_2[DATA_SIZE] = {...}; unsigned char * byte_array_2 = reinterpret_cast(&data_2[0]);
decrypt(secret, byte_array_2, DATA_SIZE * sizeof(double));
double * data_2_pointer = reinterpret_cast(byte_array_2);
Но обычно так не делают как вы описываете. Под зашифрованные данные нужно выделить отдельный массив байтов и в него складывать зашифрованные данные, а исходный массив изменять не надо. Так принято не только для шифрования, а вообще для всех видов подобных обработок данный например сжатия.

Комментариев нет:

Отправить комментарий