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

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

Восстановить пароль Регистрация
 
imkerya
1 / 1 / 0
Регистрация: 18.12.2013
Сообщений: 12
18.02.2014, 22:02     Преобразование структуры в байтовый массив #1
Нужно преобразовать структуру данных в байтовый массив для передачи на сервер от клиента и так же обратно, используя сокеты
И нужно, соответственно обратно, из байтового массива в структуру.
или класс.
VS2013
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
iRomul
 Аватар для iRomul
158 / 99 / 11
Регистрация: 17.10.2012
Сообщений: 474
Завершенные тесты: 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
 Аватар для Kuzia domovenok
1883 / 1738 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
18.02.2014, 22:39     Преобразование структуры в байтовый массив #3
iRomul, разве в объявлении размера массива не должна быть константа?
iRomul
 Аватар для iRomul
158 / 99 / 11
Регистрация: 17.10.2012
Сообщений: 474
Завершенные тесты: 1
18.02.2014, 22:46     Преобразование структуры в байтовый массив #4
Kuzia domovenok, а разве sizeof не определяет число на стадии компиляции? По крайней мере я читал про вычислимые константы в C++11, и если sizeof действительно срабатывает на стадии компиляции, то и сработать эта конструкция должна.

Добавлено через 3 минуты
Kuzia domovenok, [link]
Kuzia domovenok
 Аватар для Kuzia domovenok
1883 / 1738 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
18.02.2014, 23:16     Преобразование структуры в байтовый массив #5
Нууу... Для меня C++11 это другой язык! Я ещё не все фичи Си без плюсов и С++03 выучил. Каждый раз что-то новое встречаю.
iRomul
 Аватар для iRomul
158 / 99 / 11
Регистрация: 17.10.2012
Сообщений: 474
Завершенные тесты: 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++ Двух байтовый символьный тип

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

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

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