我正在尝试使用Arduino Uno和ENC28j60以太网模块从服务器请求基本信息。我一直在使用webclient.ino,这是Ethercard库中的一个例子。我能够获取数据,但是我很难将其转换为字符串。数据作为指针字节(?)(如字节*)进入,我可以轻松地将其转换为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("...");
}
答案 0 :(得分:2)
字符串类有一个构造函数,它接受一个空终止的C字符串(一个char数组)
所以你真的能做到:
std::string str(ethernetCharArray);
但我相当确定byte是一个unsigned char *本身,所以你可以这样做:
size_t len;
std::string s( reinterpret_cast<char const*>(EthernetByte), len ) ;