我正在尝试使用Arduino Uno和ENC28j60以太网模块从服务器请求基本信息。我一直在使用webclient.ino,这是Ethercard库中的一个示例。我可以获取数据,但是很难将其转换为字符串。数据作为指针字节(?)(如byte *)输入,我可以轻松地将其转换为const char *。从那里,但是,我不知道如何将其转换为String,我可以更轻松地对其进行操作。我的代码的关键部分如下。完整代码在这里:http://pastebin.com/kXdchwYd
byte Ethernet::buffer[700];
static uint32_t timer;
const char website[] PROGMEM = "www.yoerik.com";
// called when the client request is complete
static void my_callback (byte status, word off, word len) {
Serial.println(">>>");
Ethernet::buffer[off+600] = 0;
//How to get Ethernet::buffer+off into a string?????
Serial.print(( const char* )Ethernet::buffer+off);
Serial.println("...");
}
最佳答案
字符串类具有一个构造函数,该构造函数采用以null结尾的C字符串(一个char数组)
所以确实可以做到:
std::string str(ethernetCharArray);
但是我相当确定字节是一个无符号字符*,因此您可以执行以下操作:
size_t len;
std::string s( reinterpret_cast<char const*>(EthernetByte), len ) ;