Форум программистов, компьютерный форум, киберфорум
C (Си)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/9: Рейтинг темы: голосов - 9, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 12.07.2015
Сообщений: 1

Как обьединить переменные uint16_t с элементами массива

12.07.2015, 10:10. Показов 1873. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Люди подскажите как обьединить несколько переменных uint16 с массивом uint8[], чтоб переменные были элементами этого массива. Хочу так обьединить чтоб отправлять эти переменные по uart как элементы массива побайтно.
C
1
2
3
4
5
6
7
8
9
uint16_t temperature_1;  //0 1
uint16_t temperature_2;  //2 3
uint16_t temperature_3;  //4 5
uint16_t temperature_4;  //6 7
uint16_t temperature_5;  //8 9
uint16_t temperature_6; //10  11
uint16_t oil_pressure;    //12 13
uint16_t power_load;     //14 15
uint16_t rpm_speed;     //16 17
эти переменные должны быть элементами массива uint8_t massive[18];
Я так понимаю что нужно использовать union, но не могу найти примера как это должно выглядеть

Добавлено через 53 секунды
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
union  {
 
 struct {
uint16_t temperature_1;  //0 1
uint16_t temperature_2;  //2 3
uint16_t temperature_3;  //4 5
uint16_t temperature_4;  //6 7
uint16_t temperature_5;  //8 9
uint16_t temperature_6;  //10 11
uint16_t oil_pressure;     //12 13
uint16_t power_load;      // 14 15
uint16_t rpm_speed;//       16 17
 
}temper;
byte sendmassive[18];}  bufer;
такая конструкция получается, это правильно?
устанавливаем элемент массива: bufer.sendmasive[0]=
устанавливаем переменную temperature_1 : bufer.temper.temperature_1=
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
12.07.2015, 10:10
Ответы с готовыми решениями:

Подскажите как можно обьединить 2 переменные в одну
пример: П1="2534" П2="253" как получить П3="2534"

Обьединить 2 массива
вот такая проблемка: нужно получить все фото из альбома в массив. ВК возвращает только первые 1000 записей. делаю два запроса(второй с...

Как перевести переменную uint16_t, в две uint8_t ? РЕШЕНО!
Собственно возник в моем тупом котелке вопрос, а Как перевести переменную uint16_t, в две uint8_t ? НАЙДЕНО РЕШЕНИЕ (смотреть ниже),...

2
Псевдослучайный
1946 / 1146 / 98
Регистрация: 13.09.2011
Сообщений: 3,215
12.07.2015, 13:54
Но зачем? Почему бы просто не каставать указатель на структуру к byte* при приёме/передаче, если так уж надо?
А саму структуру стоит упаковать.
1
 Аватар для castorsky
1978 / 1082 / 87
Регистрация: 29.11.2013
Сообщений: 3,353
13.07.2015, 00:46

Не по теме:

Цитата Сообщение от NoMasters Посмотреть сообщение
Но зачем?
Чтобы вместо *(ptr + i) = val писать ptr[i] = val xD


И не забыть про порядок байт ЦА. Насчет упаковки конечно годно, но возможны проблемы портабельности (если она нужна).
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
bash-4.3~$ cat ./Nilj.c && gcc ./Nilj.c && ./a.out
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
 
struct foo
{
    uint16_t foo1;
    uint16_t foo2;
};
 
int
main (int argc, char ** argv)
{
    struct foo f = {0xAABB, 0xCCDD};
    uint8_t * ptr = (uint8_t*) &f;
    int i;
 
    for(i = 0; i < 4; ++i, ++ptr) {
        fprintf (stdout, "adress %p = %X\n", ptr, *ptr);
    }
    fprintf (stdout, "adress %p = value %X\n", &f.foo1, f.foo1);
    fprintf (stdout, "adress %p = value %X\n", &f.foo2, f.foo2);
 
    exit(EXIT_SUCCESS);
}
adress 0x7fff009d8130 = BB
adress 0x7fff009d8131 = AA
adress 0x7fff009d8132 = DD
adress 0x7fff009d8133 = CC
adress 0x7fff009d8130 = value AABB
adress 0x7fff009d8132 = value CCDD
bash-4.3~$
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
13.07.2015, 00:46
Помогаю со студенческими работами здесь

Обьединить два массива в третий (TASM)
Есть два массива A db 1,4,3,5,9 B db 0,2,6,7,8 Подскажите пожалуйста код чтобы обьеденить их в один?

Обьединить два упорядоченных массива в новый упорядоченный массив
написал программу через лазарус , программа не работает program Project1; var a,b,c:array of integer; n,m,i,j,k:integer; ...

Обьединить два упорядоченных по возростанию массива в один также упорядочнный
Код работает, но задача состоит в том,что нужно обьединить два упорядоченных по возростанию массива в один также упорядочнный. Результат...

Простой список в виде массива.Как работать с элементами списка-массива через единую функцию
Добрый день!Подсобите,как реализовать Простой список,но не через шаблоны или создание указателей,а как бы в виде массива.(Ну,или ваш...

Как обьединить 2 функции:
У меня 2 функции: - одна с AJAX запросом в самом конце, где стоит триггер,запускающий обработчик моего события lwa_login - вторая...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&amp;d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 19.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru