Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

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

Нужно преобразовать структуру данных в байтовый массив для передачи на сервер от клиента и так же обратно, используя сокеты
И нужно, соответственно обратно, из байтового массива в структуру.
или класс.
VS2013
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.02.2014, 22:02
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Преобразование структуры в байтовый массив (C++):

Запись файла в байтовый массив - C++
Доброго времени суток. Подскажите пожалуйста, как на с ++ создать массив для побайтовой записи файла? И как после этого проводить XOR...

Поиск префикса и байтовый массив - C++
Задача Всё реализовать в одной программе 1. Написать функции чтения и записи данных в двоичный файл. 2. Реализовать алгоритм поиска...

Как лучше разбить байтовый массив на части? - C++
Имеется байтовый массив (uint8_t), для последующей передачи необходимо разбить его на части. В этот массив запакованы разнообразные...

Неявное преобразование типа данных через структуры - C++
Помню что вроде был в С/С++ такой прием, который позволял посмотреть на содержимое переменной одного типа с точки зрения другого типа....

Структуры. Дан массив записей, содержащих дату и время. Упорядочить этот массив в порядке «возрастания» - C++
Дан массив записей, содержащих дату (число, месяц, год) и время (час, минута, секунда). Упорядочить этот массив в порядке «возрастания».

Преобразование значения переменной (long) через функцию в значения структуры - C++
Я недавно начал заниматься С++ и программированием в целом. Вот у меня такая проблема. В этой программе не работает часть, когда...

6
iRomul
159 / 100 / 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)];
}
Пишем в структуру, извлекаем значения из массива, на той стороне пишем в массив и извлекаем значения из структуры.
Можно попробовать такой вариант
0
Kuzia domovenok
2032 / 1876 / 169
Регистрация: 25.03.2012
Сообщений: 6,469
Записей в блоге: 1
18.02.2014, 22:39 #3
iRomul, разве в объявлении размера массива не должна быть константа?
0
iRomul
159 / 100 / 11
Регистрация: 17.10.2012
Сообщений: 480
Завершенные тесты: 1
18.02.2014, 22:46 #4
Kuzia domovenok, а разве sizeof не определяет число на стадии компиляции? По крайней мере я читал про вычислимые константы в C++11, и если sizeof действительно срабатывает на стадии компиляции, то и сработать эта конструкция должна.

Добавлено через 3 минуты
Kuzia domovenok, [link]
0
Kuzia domovenok
2032 / 1876 / 169
Регистрация: 25.03.2012
Сообщений: 6,469
Записей в блоге: 1
18.02.2014, 23:16 #5
Нууу... Для меня C++11 это другой язык! Я ещё не все фичи Си без плюсов и С++03 выучил. Каждый раз что-то новое встречаю.
0
iRomul
159 / 100 / 11
Регистрация: 17.10.2012
Сообщений: 480
Завершенные тесты: 1
18.02.2014, 23:18 #6
Kuzia domovenok, в таком случае либо заранее считать размер структуры со всеми вытекающими, либо брать заведомо большой массив, что тоже не самый лучший вариант, но зато можно спокойной модифицировать исходную структуру. Может еще какие-то средства есть.
0
DrOffset
7377 / 4454 / 1009
Регистрация: 30.01.2014
Сообщений: 7,304
18.02.2014, 23:24 #7
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
Нууу... Для меня C++11 это другой язык!
sizeof работает на этапе компиляции во всех стандартах С++
0
18.02.2014, 23:24
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.02.2014, 23:24
Привет! Вот еще темы с ответами:

Двух байтовый символьный тип - C++
wchar_t ch; ch=L'w'; Все что знаю что он двух байтовый и выводит номер символа... Для чего он вообше и почему такой редкий что только...

Помещение структуры в вектор, удаление структуры, изменение элементов структуры - C++
Здравствуйте. Помогите разобраться с тем, как: 1 - находить элементы в векторе зная уникальный элемент структуры. 2 - удалять...

Преобразование в массив - C++
Здравствуйте. У меня вопрос. Есть например структура ST. Переменная V это **ST. После выполнения функции в ST массив структур. Вопрос:...

Преобразование строки в массив - C++
Здраствуйте пишу программу.Мне нужно преобразовать строку в массив.Пробовал через цикл. #include <iostream> #include <cstdlib> ...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

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