在Arduino中将字节*转换为String

时间:2014-07-15 20:19:10

标签: c++ c arduino processing

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

1 个答案:

答案 0 :(得分:2)

字符串类有一个构造函数,它接受一个空终止的C字符串(一个char数组)

所以你真的能做到:

    std::string str(ethernetCharArray);

但我相当确定byte是一个unsigned char *本身,所以你可以这样做:

    size_t len;
    std::string s( reinterpret_cast<char const*>(EthernetByte), len ) ;