c++ - 在 C++ 中读取原始字节数据
问题描述
我有一个非常基本的问题。我想根据 Nrf52 BLE 设备接收到的 BLE 数据打开/关闭 LED。我的问题是数据(Received_Data)是原始字节数据形式(1 字节),我不知道如何对其执行 if 语句,或者将其转换为可以的形式。在下面的代码中,我有:
if (Received_Data > 50)
{
nrf_gpio_pin_toggle(LED_2);
}
end
如何让 'Received_Data' 在这样的 IF 语句中使用,以便可以将其读取为整数或十六进制数?
case APP_UART_DATA_READY:
UNUSED_VARIABLE(app_uart_get(&data_array[index]));
index++;
if ((data_array[index - 1] == '\n') ||
(data_array[index - 1] == '\r') ||
(index >= m_ble_nus_max_data_len))
{
if (index > 1)
{
NRF_LOG_DEBUG("Ready to send data over BLE NUS");
NRF_LOG_HEXDUMP_DEBUG(Received_Data, index);
if (Received_Data > 50)
{
nrf_gpio_pin_toggle(LED_2);
}
end
这让我很头疼。我敢肯定有人可以在 5 秒内回答这个问题。而且我已经超出了我可以花时间挖掘所有相关的 C++ 文档以找到解决方案的地步。
解决方案
由于 Received_Data 是一个 uint8_t 数组,您可以直接访问各个字节:
if (Received_Data[0] > 50)
//or
if (Received_Data[index] > 50)
uint8_t 为 [0..255]。
推荐阅读
- javascript - 如何验证从文件类型的输入元素中选择的文件类型
- azure-active-directory - 尝试通过 API 访问 SFB
- oracle10g - Oracle 10g 上的浏览器兼容性问题
- asp.net-core - 获取 HTTP POST 并将其转换为 ASP.NET Core 标识的最直接方法是什么?
- bash - sh:2:./ci.sh:语法错误:单词意外
- c# - 使用缓冲区将 byte[] 转换为 Base64 字符串(以避免 OOM)
- c# - vbs到C#的转换,无法获取ScriptingEngine
- android - 如何在数据绑定中使用泛型类的变量?
- python-3.x - 使用 Matplotlib 和 FuncAnimation 为具有不同 FPS 的对象设置动画
- javascript - 根据选择下拉显示或隐藏多个字段 - jquery