バイトと uint8_t の値を理解するのに苦労しています。
心拍数サービス プロトコルを介して Bluetooth 4.0 心拍数モニターからデータを読み取る Apple によって作成されたサンプル プロジェクトを使用しています。サンプル プロジェクトは、以下のように心拍数データを提供します。
- (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 の最初のデータ ビットを返すと仮定していますが、2 番目にアクセスする方法がわかりません (reportData[0] & 0x02) は思ったように機能しません。理想的には、reportData[0] のすべてのデータをチェックし、それに基づいて、保存されている場所に応じて reportData[4] または [5] の rr 間隔データを取得し、それを反復して各値を取得します。そこには複数の値が格納されている可能性があります。
私が知っている初心者の質問ですが、答えを見つけるのに苦労しています。実際、答えを確立するための検索用語も見つかりません。