Вступить в клуб →
средняявопросБиты, целые типы и арифметика на МК

Датчик давления отдаёт 300, а прошивка читает 11265

По даташиту датчик возвращает 16-битное значение старшим байтом вперёд. По I2C пришло buf[0] = 0x01, buf[1] = 0x2C. Код на Cortex-M:

uint16_t raw;
memcpy(&raw, buf, 2);

В raw оказывается 11265. Как прочитать значение переносимо?

  • raw = (uint16_t)((buf[0] << 8) | buf[1]);
  • raw = (uint16_t)((buf[1] << 8) | buf[0]);
  • raw = *(uint16_t *)buf;
  • raw = (uint16_t)(buf[0] + buf[1]);

🔒 Проверка ответа — для участников клуба

  • Проверка ответа
  • Подсказка, если застряли
  • Разбор с объяснением, почему так
  • Прогресс по всем задачам и виртуальные собеседования
Зарегистрироваться →

Регистрация занимает минуту

Другие задачи раздела