Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.54/13: Рейтинг темы: голосов - 13, средняя оценка - 4.54
63 / 46 / 11
Регистрация: 27.12.2017
Сообщений: 1,484

Создание масивов

24.08.2019, 18:26. Показов 3457. Ответов 30
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
C++
1
2
unsigned char buffer[HCI_MAX_EVENT_SIZE];
evt_le_meta_event* meta = (evt_le_meta_event*)(buffer + HCI_EVENT_HDR_SIZE + 1);
что этот кусок код делает? точнее на что будет указывать meta? на hci_event_hdr_size+1-нный байт начиная с buffer[0] или что?
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
24.08.2019, 18:26
Ответы с готовыми решениями:

Объединение масивов
Итак есть задание:" n- количество масивов какие нужно обеденить, a- масив указателей на масивы которые нужно нужно обьеденить size -...

Обработка масивов
Задана матрица размерностью N * M . Поменять местами строки матрицы по алгоритму : 1 с последним , 2 с предпоследним и тд . в окрашенной...

Перенагрузка масивов
Перегрузить масив в виде очереди.Выручайте АДТ - черга. Додатково перевантажити наступні операції: + - додати елемент; - - витягнути...

30
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
24.08.2019, 20:18
Лучший ответ Сообщение было отмечено ReYalp как решение

Решение

Студворк — интернет-сервис помощи студентам
Цитата Сообщение от ReYalp Посмотреть сообщение
что этот кусок код делает? точнее на что будет указывать meta? на hci_event_hdr_size+1-нный байт начиная с buffer[0] или что?
Здесь buffer - это память, куда будет начитываться событие. Эти события могут быть разного размера, поэтому буфер выделяется максимального размера.
Событие состоит из заголовка, размером HCI_EVENT_HDR_SIZE + один байт (не знаю зачем) + данные, evt_le_meta_event
C++
1
2
3
4
5
6
struct event
{
  hci_event_hdr hdr;
  uint8_t x;
  evt_le_meta_event meta;
};
Т.е. (evt_le_meta_event*)(buffer + HCI_EVENT_HDR_SIZE + 1) это просто получение указателя на event::meta, вполне нормальная конструкция
1
285 / 176 / 21
Регистрация: 16.02.2018
Сообщений: 666
24.08.2019, 20:19
Цитата Сообщение от _stanislav Посмотреть сообщение
за границу массива на 2 байта вылезет.
0
63 / 46 / 11
Регистрация: 27.12.2017
Сообщений: 1,484
24.08.2019, 20:26  [ТС]
oleg-m1973, зачем тогда так странно выделять память под evt_le_meta_event meta?
почему нельзя сделать как-то так evt_le_meta_event meta[size] ?

Добавлено через 3 минуты
oleg-m1973, а хотя там же дальше read в этот массив,тоесть выходит пишется в buffer и соответственно в meta
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
24.08.2019, 20:29
Цитата Сообщение от ReYalp Посмотреть сообщение
oleg-m1973, зачем тогда так странно выделять память под evt_le_meta_event meta?
Потому что evt_le_meta_event - это массив данных неопределённого размера
C++
1
2
3
4
5
6
typedef struct {
 uint8_t subevent;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 uint8_t data[0];
} __attribute__ ((packed)) evt_le_meta_event;
#define EVT_LE_META_EVENT_SIZE 1
Добавлено через 2 минуты
Цитата Сообщение от ReYalp Посмотреть сообщение
oleg-m1973, а хотя там же дальше read в этот массив,тоесть выходит пишется в buffer и соответственно в meta
В этот буфер записывается структура struct event (которой я не нашёл в заголовке, поэтому придумал), потом она распарсивается в зависимости от evt_le_meta_event::subevent
0
63 / 46 / 11
Регистрация: 27.12.2017
Сообщений: 1,484
24.08.2019, 20:37  [ТС]
oleg-m1973,
Цитата Сообщение от oleg-m1973 Посмотреть сообщение
В этот буфер записывается структура struct event (которой я не нашёл в заголовке, поэтому придумал), потом она распарсивается в зависимости от evt_le_meta_event::subevent
что-то вот этого момента я вообще не понял

Добавлено через 4 минуты
C++
1
2
unsigned char buffer[HCI_MAX_EVENT_SIZE];
evt_le_meta_event* meta = (evt_le_meta_event*)(buffer + HCI_EVENT_HDR_SIZE + 1);
вот тут создается массив размером 260 байт
дальше начиная с 3-го байта начинается память объекта evt_le_meta_event ,
дальше идет
C++
1
read(device_desc, buffer, sizeof(buffer));
который данные с сокета записывает в buffer.
дальше идет проверка
C++
1
if (meta->subevent != 0x02 || (uint8_t)buffer[BLE_EVENT_TYPE] != BLE_SCAN_RESPONSE)
проверяющая 1 байт памяти meta или 4-й байт buffer и тд

Добавлено через 14 секунд
разве не так?
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
24.08.2019, 22:03
Цитата Сообщение от ReYalp Посмотреть сообщение
вот тут создается массив размером 260 байт
дальше начиная с 3-го байта начинается память объекта evt_le_meta_event ,
Создаётся массив, размером HCI_MAX_EVENT_SIZE, в котором по смещению HCI_EVENT_HDR_SIZE + 1 будет лежать
структура evt_le_meta_event. Приплюсовывем к buffer соответствующее смещение и сохраняем получившийся указатель в переменной meta.
Потом начитываем событие в буфер - read(buffer). Теперь по адресу, куда указывает meta, лежат корректные данные. Работаем с ними
0
63 / 46 / 11
Регистрация: 27.12.2017
Сообщений: 1,484
24.08.2019, 22:15  [ТС]
oleg-m1973,
Цитата Сообщение от oleg-m1973 Посмотреть сообщение
Потом начитываем событие в буфер - read(buffer).
что вообще делает read? я думал это аналог виндовского read которая данные с драйвера читает в буфер программы
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
25.08.2019, 08:24
Цитата Сообщение от ReYalp Посмотреть сообщение
что вообще делает read? я думал это аналог виндовского read которая данные с драйвера читает в буфер программы
Так и есть
0
63 / 46 / 11
Регистрация: 27.12.2017
Сообщений: 1,484
25.08.2019, 08:58  [ТС]
oleg-m1973, а в каком месте в коде указывается что read должен считать именно эту структуру?
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
25.08.2019, 09:57
Цитата Сообщение от ReYalp Посмотреть сообщение
oleg-m1973, а в каком месте в коде указывается что read должен считать именно эту структуру?
Где-то в документации, наверное, указано, что отправляется именно эта структура.
0
63 / 46 / 11
Регистрация: 27.12.2017
Сообщений: 1,484
25.08.2019, 12:41  [ТС]
oleg-m1973, ну это понятно, но не просто так read читает именно её, в каком именно месте указывается что читать? Может тут?
C++
1
2
3
4
5
6
7
8
9
hci_filter_clear(&new_options);
    hci_filter_set_ptype(HCI_EVENT_PKT, &new_options);
    hci_filter_set_event(EVT_LE_META_EVENT, &new_options);
 
    if (setsockopt(device_desc, SOL_HCI, HCI_FILTER,
                   &new_options, sizeof(new_options)) < 0) {
        fprintf(stderr, "ERROR: Could not set socket options.\n");
        return 1;
    }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
25.08.2019, 12:41

Сортировка масивов
Посмотрите пжл что не так# include &lt;iostream&gt; using namespace std; int main() {int a={10,12,6,4,1,8,17,2,9}; int c,is; for(int...

Сортировка масивов
Сабж. Не могу додуматься до решения, особенно вторая задача. 1. Организуйте массив, содержащий 20 различных целых чисел. После этого 10...

Обработка одномерных масивов.
1) Найти максимальный элемент массива A. 2) Найти среднее арифметическое элементов массива В. A (25), B (30) Метод сортировки...

Обработка двумерных масивов
Задана матрица А(n,n). Определить максимальный элемент среди элементов матрицы, расположенных выше главной диагонали, и минимальный...

Програма на масив масивов
Помогите написать задачу, очень надо... Я в с++ вааше 0... Ввести прямоугольною матрицу целых чисел. Напечатать номера строк матрицы, ...


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

Или воспользуйтесь поиском по форуму:
31
Ответ Создать тему
Новые блоги и статьи
Книги по геймдизайну, левел-дизайну, игровым механикам и проектированию игрового опыта
8Observer8 08.11.2026
Содержание блога | English Version 1. 2003 - 06 - Designing Virtual Worlds (1st Edition) Автор: Richard A. Bartle | Объем: 768 стр. Ссылки: Amazon . . .
Родители токсичные абьюзеры по отношению к своим детям ругают их оскорбляют не любят
zorxor 08.11.2026
Жить в атмосфере постоянных оскорблений, критики и холодности со стороны родителей — это тяжелое и болезненное испытание, которое оставляет глубокие эмоциональные раны. Токсичное и абьюзивное. . .
Как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Ответ от Джемени ИИ.
zorxor 08.11.2026
Джемени, как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Многие люди, возвращаясь домой, сразу переодеваются в максимально свободную одежду или вовсе предпочитают. . .
Паттерн очереди действий/команд (Action / Command Queue). Система очереди действий и кат-сцен с SDL3 Callbacks, cglm и OpenGL
8Observer8 07.11.2026
Содержание блога | English Version Руководство для начинающих по реализации паттерна очереди действий/ команд (Action / Command Queue) на C++ (C++20) с использованием официального SDL3 Callbacks. . .
Проверка полного ФИО в типовом справочнике
Maks 07.11.2026
Решение реализовано в конфигурации КА2, на примере справочника "КонтактныеЛицаПартнеров". Задача: Запрет инициалов. Не допускаеть использование сокращений вида "И. И. ", "И. И. ", "И И" и. . .
Про "Windows must die!"
kumehtar 04.11.2026
Знаете, чет накатило. . . . Когда-то это было почти боевым кличем: мол, нормальный человек сидит на DOS, OS/ 2 или Linux, а вот это вот - Must Die. А теперь человек произносит «мастдай» с усмешкой - и. . .
Красочные поля с номером страницы svg+background-image
russiannick 04.11.2026
Красочные поля с номером страницы не менее важны чем в эпоху бумажных книг. Посему спешу представить почтеннейшей публике этот важный инструмент который эти поля и формирует. В процессе разработки. . .
Вступаем в новую фазу генерации favicons, векторную.
russiannick 02.11.2026
Теперь нет нужды скрывать что используется простой svg. Исходный код изображения помещаем в поле и жмем кнопку. Исходник преобразуется в вид корректный для помещения в favicon или в url(). Нажатие. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru