std::字符串到字符*而不切割字节
std::string to char* without cutting bytes
所以,我正在使用BLE库从移动应用程序接收字节,我想将这些字节保存在ESP32("Arduino")的SD卡中。
BLE库正在接收这种格式的数据,作为std::string
std::string rxValue = pCharacteristic->getValue();
当我收到数据时,我正在执行一个Serial.println(rxValue.length())
来验证我收到的块的大小,我按预期接收了512 字节,它确实在打印512
所以,这里一切都很好,我收到了我想要的 512 字节,接下来是问题:
为了保存到SD卡,写入SD卡的功能要求我char * message
所以我必须将std::string
转换为char *
,我这样做如下:
const char *cstr = rxValue.c_str();
但是每当我这样做时,一些字节(我相信是字母数字/符号频谱之外的字节)被切断,将它们转换为字符数组后长度不再是 512,我需要它们是相同的 512 字节才能将所有字节正确写入 SD 卡。
为了测试此行为,我打印了char *
的长度,以查看 512 字节是否仍然存在:
strlen(cstr)
但是惊喜!它们不是 512 字节,它们要少得多,所以当我尝试将std::string
转换为char *
时,我做错了
将std::string
传入的字节链转换为char *
而不丢失字节的正确方法是什么:-(
提前谢谢你。
一种可能的解释是,如果收到的字符串以某种方式包含 null 终止符