2 / 2 / 1
Регистрация: 08.02.2012
Сообщений: 76
|
|||||||||||||||||||||
1 | |||||||||||||||||||||
Копирование структуры в массив29.09.2020, 18:50. Показов 3892. Ответов 16
Здравствуйте!
Имеется любая структура с разным типом данных, вложенными структурами в том числе
А хотелось бы хотя бы 0x34,0x02,0x75,0x76,0x77,0x78,0x79,0x67,0x68,0x69 Как частичное копирование структуры в массив сделать правильно?
0
|
29.09.2020, 18:50 | |
Ответы с готовыми решениями:
16
Структуры, копирование файла Копирование структуры таблиц Копирование структуры из одной БД в другую Копирование без сохранения структуры |
6579 / 4564 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
|
|||||||||||
29.09.2020, 19:09 | 2 | ||||||||||
0
|
2 / 2 / 1
Регистрация: 08.02.2012
Сообщений: 76
|
|
29.09.2020, 19:27 [ТС] | 3 |
Боюсь вас разочаровать, но от перемены мест слагаемых сумма не меняется. Совершенно неважно, где определять размер передаваемых данных, в параметре или в теле функции, результат в конечном массиве аналогичен.
0
|
6579 / 4564 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
|
|
29.09.2020, 19:32 | 4 |
Ага, здрасьте, приехали. Боюсь тебя разочаровать, но твоя sizeof(buf) всегда возвращает цифру 8 в 64-битных системах, либо цифру 4 в 32-битных.
А datka.buf что-то явно не такого размера
0
|
2 / 2 / 1
Регистрация: 08.02.2012
Сообщений: 76
|
|
29.09.2020, 20:09 [ТС] | 5 |
Ну я понял к чему вы, учту поведение функции sizeof, вынесу в параметр, но в данной ситуации одинаков массив в итоге.
0
|
6579 / 4564 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
|
||||||
29.09.2020, 20:43 | 6 | |||||
Что такое big_massive?
И может надо вот так
Добавлено через 53 секунды Что ты вообще пытаешься сделать в своей glue_arrays?
0
|
2 / 2 / 1
Регистрация: 08.02.2012
Сообщений: 76
|
|
29.09.2020, 20:54 [ТС] | 7 |
big_massive то же самое, что и fara из примера чуть ниже - простой uint8_t массив
Из сообщения темы видно, что glue_arrays мне нужен для копирования данных из структуры в массив. Ваш вариант подобен функции memcpy, но она копирует непрерывное поле данных в самое начало массива, мне нужно последовательно копировать в массив несколько других массивов/переменных/структур на мой выбор.
0
|
2 / 2 / 1
Регистрация: 08.02.2012
Сообщений: 76
|
|
01.10.2020, 09:17 [ТС] | 8 |
Неужели это такая сложная нерешаемая проблема по укладке байт? Никто не может назвать причину, по которой через байт складываются массивы и как это исправить?
0
|
фрилансер
5499 / 5095 / 1047
Регистрация: 11.10.2019
Сообщений: 13,346
|
||||||
01.10.2020, 09:38 | 9 | |||||
Сообщение было отмечено Protosha как решение
Решение
Protosha, да всё вроде нормально, что именно не работает? Вот пример
11 ,11 ,11 ,11 ,11 ,11 ,11 ,11 ,11 ,11 ,
1
|
2834 / 2336 / 708
Регистрация: 29.06.2020
Сообщений: 8,655
|
|
01.10.2020, 10:29 | 10 |
Проблема таки может быть с использованием union.
Для использование вышеуказанной структуры нужна ОГРОМНАЯ причина. Если причина не огромная, лучше обходится без него.
0
|
фрилансер
5499 / 5095 / 1047
Регистрация: 11.10.2019
Сообщений: 13,346
|
|
01.10.2020, 10:39 | 11 |
SmallEvil, подозреваю, что дело больше в выравнивании
0
|
2 / 2 / 1
Регистрация: 08.02.2012
Сообщений: 76
|
|
01.10.2020, 20:43 [ТС] | 12 |
Да, на компьютере всё хорошо работает, но этот код запускаю на ARM-е, может проблемы в прыжках через байт в little endian ?
А почему с union проблемы?
0
|
2834 / 2336 / 708
Регистрация: 29.06.2020
Сообщений: 8,655
|
|
01.10.2020, 20:59 | 13 |
Protosha,
никогда не писал для ARM, так что рассмотрите вариант от Алексей1153, https://habr.com/ru/post/309144/ Добавлено через 6 минут на вкус и цвет ...
0
|
2 / 2 / 1
Регистрация: 08.02.2012
Сообщений: 76
|
|||||||||||
01.10.2020, 22:43 [ТС] | 14 | ||||||||||
По ссылке мутный выход из ситуации, но всё же решением я выбрал копирование через memcpy
0
|
фрилансер
5499 / 5095 / 1047
Регистрация: 11.10.2019
Сообщений: 13,346
|
|
01.10.2020, 22:54 | 15 |
по-моему, вот это лишнее. А точнее - нужно вынести за цикл прибавление сдвига
Добавлено через 2 минуты а вот это - потенциальная ошибка. Если первый раз зайти не с нулём в st, будет нехорошо, так как нет инициализации position
0
|
18844 / 9843 / 2408
Регистрация: 30.01.2014
Сообщений: 17,285
|
|
02.10.2020, 00:13 | 16 |
Ничего не будет.
static-переменные инициализируются неявно.
Сообщение от http://eel.is/c++draft/basic.start.static#2
1
|
фрилансер
5499 / 5095 / 1047
Регистрация: 11.10.2019
Сообщений: 13,346
|
|
02.10.2020, 07:37 | 17 |
DrOffset, это хорошо )
0
|
02.10.2020, 07:37 | |
02.10.2020, 07:37 | |
Помогаю со студенческими работами здесь
17
Копирование массива в переменные структуры Копирование одной структуры в другую Копирование массива из структуры с использованием memcpy() Копирование структуры папок и файлов по маске Копирование папки с сохранением структуры папок Создание структуры каталогов и копирование файлов Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |