Форум программистов, компьютерный форум CyberForum.ru

Приведение типов, возможно ли такое - C++

Восстановить пароль Регистрация
 
Fobes
16 / 16 / 2
Регистрация: 19.09.2012
Сообщений: 207
13.01.2016, 22:43     Приведение типов, возможно ли такое #1
Всем доброго времени суток... Не знаю как правильно спросить то что я хочу, но попробую объяснить на примере)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
u_char *packet; //массив с данными
 
struct test_header
{
        u_int8_t    start_test;
        u_int8_t    length_test;
        u_int8_t    data[12];
}
 
test_header*        test_hdr;
 
test_hdr = (test_header*)packet;
 
packet += sizeof(test_header);
Собственно простой код, который работает без каких либо ошибок, но вот столкнулся с проблемкой, размерность массива data зависит от предыдущего параметра length_test, т.е. надо как-то так, u_int8_t data[length_test], но это ясно дело не скомпилируется) Пробовал с динамическим выделением памяти побаловаться, но моих знаний маловато чтобы самому дойти) Не подскажите, как быть ? как решить мою задачку и можно ли это вообще ?)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.01.2016, 22:43     Приведение типов, возможно ли такое
Посмотрите здесь:

Приведение типов. C++
C++ Приведение типов?
Приведение типов C++
C++ Приведение типов
Приведение типов C++
C++ Приведение типов
Приведение типов C++
Приведение типов C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DrOffset
6450 / 3824 / 885
Регистрация: 30.01.2014
Сообщений: 6,618
13.01.2016, 23:03     Приведение типов, возможно ли такое #2
Fobes, случайно не это нужно?
nonedark2008
624 / 502 / 92
Регистрация: 28.07.2012
Сообщений: 1,343
14.01.2016, 00:06     Приведение типов, возможно ли такое #3
Fobes, сделай две функции:
Первая преобразует объект test_header в массив байт, вторая - обратно.
Собственно в правильном объекте test_header под поле data будет динамически выделено length_test байт.
Первая функция будет принимать указатель на массив байт, куда нужно записать результат, и будет записывать 1 байт start_test, 1 байт length_test и length_test байт из динамического массива data.
Вторая функция тоже принимает указатель на массив и читает первый байт start_test, второй байт length_test, динамически выделяет length_test байт под массив data и читает туда еще length_test байт.

От динамического выделения памяти можно попробовать отказаться в пользу статического, т.к. макс значение length_test = 255. Массив получается не слишком большой, но логику двух вышеописанных функций лучше оставить прежней.
Yandex
Объявления
14.01.2016, 00:06     Приведение типов, возможно ли такое
Ответ Создать тему
Опции темы

Текущее время: 00:55. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru