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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
imkerya
1 / 1 / 0
Регистрация: 18.12.2013
Сообщений: 12
#1

Преобразование структуры в байтовый массив - C++

18.02.2014, 22:02. Просмотров 620. Ответов 6
Метки нет (Все метки)

Нужно преобразовать структуру данных в байтовый массив для передачи на сервер от клиента и так же обратно, используя сокеты
И нужно, соответственно обратно, из байтового массива в структуру.
или класс.
VS2013
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.02.2014, 22:02     Преобразование структуры в байтовый массив
Посмотрите здесь:
Поиск префикса и байтовый массив C++
Запись файла в байтовый массив C++
Как лучше разбить байтовый массив на части? C++
C++ Неявное преобразование типа данных через структуры
Структуры. Дан массив записей, содержащих дату и время. Упорядочить этот массив в порядке «возрастания» C++
C++ Преобразование значения переменной (long) через функцию в значения структуры
C++ Двух байтовый символьный тип
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
iRomul
158 / 99 / 11
Регистрация: 17.10.2012
Сообщений: 480
Завершенные тесты: 1
18.02.2014, 22:26     Преобразование структуры в байтовый массив #2
Во-первых структуру лучше упаковать по байтовой границе:
C++
1
2
3
4
5
6
7
8
#pragma pack(push, 1)
struct foo {
  float a;
  double b;
  char c;
  int d;
}
#pragma pack(pop)
Во-вторых можно использовать объединение
C++
1
2
3
4
union foo_splitted {
  foo data;
  char array[sizeof(foo)];
}
Пишем в структуру, извлекаем значения из массива, на той стороне пишем в массив и извлекаем значения из структуры.
Можно попробовать такой вариант
Kuzia domovenok
1890 / 1745 / 118
Регистрация: 25.03.2012
Сообщений: 5,924
Записей в блоге: 1
18.02.2014, 22:39     Преобразование структуры в байтовый массив #3
iRomul, разве в объявлении размера массива не должна быть константа?
iRomul
158 / 99 / 11
Регистрация: 17.10.2012
Сообщений: 480
Завершенные тесты: 1
18.02.2014, 22:46     Преобразование структуры в байтовый массив #4
Kuzia domovenok, а разве sizeof не определяет число на стадии компиляции? По крайней мере я читал про вычислимые константы в C++11, и если sizeof действительно срабатывает на стадии компиляции, то и сработать эта конструкция должна.

Добавлено через 3 минуты
Kuzia domovenok, [link]
Kuzia domovenok
1890 / 1745 / 118
Регистрация: 25.03.2012
Сообщений: 5,924
Записей в блоге: 1
18.02.2014, 23:16     Преобразование структуры в байтовый массив #5
Нууу... Для меня C++11 это другой язык! Я ещё не все фичи Си без плюсов и С++03 выучил. Каждый раз что-то новое встречаю.
iRomul
158 / 99 / 11
Регистрация: 17.10.2012
Сообщений: 480
Завершенные тесты: 1
18.02.2014, 23:18     Преобразование структуры в байтовый массив #6
Kuzia domovenok, в таком случае либо заранее считать размер структуры со всеми вытекающими, либо брать заведомо большой массив, что тоже не самый лучший вариант, но зато можно спокойной модифицировать исходную структуру. Может еще какие-то средства есть.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.02.2014, 23:24     Преобразование структуры в байтовый массив
Еще ссылки по теме:
C++ Преобразование в массив
Преобразование строки в массив C++
C++ Преобразование указателя в массив
Преобразование матрицы в одномерный массив C++
C++ Преобразование строки символов в массив

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

Или воспользуйтесь поиском по форуму:
DrOffset
7058 / 4199 / 949
Регистрация: 30.01.2014
Сообщений: 6,965
18.02.2014, 23:24     Преобразование структуры в байтовый массив #7
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
Нууу... Для меня C++11 это другой язык!
sizeof работает на этапе компиляции во всех стандартах С++
Yandex
Объявления
18.02.2014, 23:24     Преобразование структуры в байтовый массив
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru