c++ - 如何在 C++(Arduino/C++)中将字符串转换为 uint8_t?
问题描述
我有一个字符串:String outputValue = ""
然后我附加到它以构建一个类似 JSON 的结构以发送到远程设备。此代码使用 Arduino 引导加载程序在 ATMEGA328P 上运行。我通过做附加值outputValue += "hello"
。
我用来发送值的库需要uint8_t *
它的有效负载以及该有效负载的相关长度。有什么方法可以将此字符串转换/转换为 uint8_t 数组,或者是否有一种首选方法来进行构建器而不是使用字符串?我愿意接受任何建议
我用来测试库的工作代码具有以下内容。请注意,这只是我将原始 outputValue 复制到记事本,将每个字符用单引号括起来,然后硬编码这个新数组以进行测试的结果:
uint8_t testCmd[] = { '{', '"', 'T', '"', ':', '"', 'A', '1', '"', ',', '"', 'E', '"', ':', '-', '1', ',', '"', 'I', '"', ':', '[', '[', '1', ',', '[', '[', '[', '[', '2', '5', '0', ',', '2', ']', ',', '[', '0', ',', '4', ']', ']', ']', ']', ']', ']', '}' };
ZBTxRequest txReq = ZBTxRequest(coordinatorAddr64, testCmd, sizeof(testCmd));
ZBTxStatusResponse txResp = ZBTxStatusResponse();
xbee.send(txReq);
解决方案
就在这里。
做这样的事情:
String testString = "Test String";
uint8_t* pointer = (uint8_t*)testString.c_str();
int length = testString.length();
编辑:
您应该将其应用于您的问题,如下所示:
String testString = "Test String";
uint8_t* pointer = (uint8_t*)testString.c_str();
int length = testString.length();
ZBTxRequest txReq = ZBTxRequest(coordinatorAddr64, pointer, length);
ZBTxStatusResponse txResp = ZBTxStatusResponse();
xbee.send(txReq);
推荐阅读
- android - 在 Android 应用程序中监控 WebRTC 比特率
- reactjs - 使用 React,使用State 映射槽状态对象,并创建音频元素数组。然后将音频持续时间保存为数组状态
- r - R - openxlsx read.xlsx 无法读取某些列
- c# - 奇怪的屏幕缩放和精灵显示
- react-native - 构建失败的反应原生(不生成 apk)
- java - 将数字范围从 BST 插入到 Linked-List
- r - 将变量与其中许多数据包含在R中的行中的变量连接起来
- java - 以编程方式停止 Wildfly 时“WFLYJMX0012:参数和描述的长度不同”
- apache-spark - spark与neo4j中的标签传播算法
- javascript - Youtube Api 上传请求被 Cors 阻止