我基本上以AsyncUDP服务器为例,我正在尝试将packet.data()
的内容保存到一个字符串中。我得到了关于invalid conversion
的各种错误.我已经为此苦苦挣扎了几个小时,并没有记录每一步。
如果我使用String testString = packet.data();
我会得到invalid conversion from 'uint8_t* {aka unsigned char*}' to 'const char*' [-fpermissive]
.
显然,我在 C 方面不够强大,无法完全理解所有这些数据类型、指针等,以及如何摆脱看似简单的问题。
保存版本:
char* tmpStr = (char*) malloc(packet.length() + 1);
memcpy(tmpStr, packet.data(), packet.length());
tmpStr[packet.length()] = ' '; // ensure null termination
String testString = String(tmpStr);
free(tmpStr); // Strign(char*) creates a copy so we can delete our one
如果数据包的数据以空终止,则以下内容应该有效:
String testString = String( (char*) packet.data());
这是可能的,因为unit8_t* 与char* 在本质上相同,但编译器不能自行进行此转换,因此您必须执行显式强制转换。 然后可以使用String(char*(的构造函数。