我一直在使用赛普拉斯BLE PSoC 4200,并且我已经设置了我的GATT数据库,以便将int32
数据包发送到我的iPhone。但是,您只能使用uint8
个数据写入GATT数据库。所以我编写了以下内容来获取此int32
电压读数并将其放入uint8
字节数组中:
// function passes in int32 variable 'result'
uint8 array[4];
array[0] = result & 0xFF;
array[1] = (result >> 8) & 0xFF;
array[2] = (result >> 16) & 0xFF;
array[3] = (result >> 24) & 0xFF;
因此,考虑到这一点,当发送int32
数据包时,我希望能够获取每个字节,并以某种方式将它们重新组合成原始的int32值,并将其打印到屏幕上(例如456000将是0.456 V)。
现在,我获得4个字节并像这样处理它们:
NSData* data = [characteristic value];
const uint8_t *reportData = [data bytes];
// variable to hold the eventual 32-bit data
uint32_t voltage = 0;
有没有办法遍历*reportData
的每个索引并连接字节?任何帮助都可以,谢谢。
答案 0 :(得分:0)
这样的事情不起作用吗?
uint32_t v0 = (uint32_t)reportData[0];
uint32_t v1 = (uint32_t)reportData[1] << 8;
uint32_t v2 = (uint32_t)reportData[2] << 16;
uint32_t v3 = (uint32_t)reportData[3] << 24;
uint32_t voltage = v0 | v1 | v2 | v3;