如何将 4 个字节的数据 (uint8_t) 放入 uint32_t 类型的变量中
How to get 4 bytes of data (uint8_t) into a variable of type uint32_t
我一直在使用 Cypress 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
的每个索引并连接字节?任何帮助都可以,谢谢。
这样的东西行不通吗?
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;
我一直在使用 Cypress 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
的每个索引并连接字节?任何帮助都可以,谢谢。
这样的东西行不通吗?
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;