У меня проблемы с пониманием байтов и значений uint8_t.
Я использую образец проекта, созданный Apple, который считывает данные с монитора сердечного ритма Bluetooth 4.0 через протокол службы сердечного ритма. Пример проекта выдает данные о частоте сердечных сокращений, как показано ниже:
- (void) updateWithHRMData:(NSData *)data
{
const uint8_t *reportData = [data bytes];
uint16_t bpm = 0;
if ((reportData[0] & 0x01) == 0)
{
/* uint8 bpm */
bpm = reportData[1];
}
else
{
/* uint16 bpm */
bpm = CFSwapInt16LittleToHost(*(uint16_t *)(&reportData[1]));
}
Я предполагаю, что (reportData[0] & 0x01) возвращает первый бит данных в массиве данных reportData, но я не знаю, как получить доступ ко второму (reportData[0] & 0x02) не работает, как я думал. В идеале я хотел бы проверить все данные в reportData[0], а затем на основе этого получить данные интервала rr в reportData[4] или [5] в зависимости от того, где они хранятся, и выполнить итерацию по ним, чтобы получить каждое значение, как я считаю там может храниться несколько значений.
вопрос новичка, который я знаю, но у меня проблемы с поиском ответа или поисковыми запросами, чтобы установить ответ.