我正在尝试使用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 ) ;

10-06 14:21