首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Arduino显示器Ethernet.localIP()

Arduino显示器Ethernet.localIP()
EN

Stack Overflow用户
提问于 2015-01-23 22:18:13
回答 3查看 9.8K关注 0票数 5

我试图将设备的IP地址分配给一个字符串变量。当我使用Serial.println(Ethernet.localIP())进行测试时,它会以八进制显示IP地址。如果我使用String(Ethernet.localIP());,那么它将显示为十进制。

是否有方法将八进制格式赋值给变量?

代码语言:javascript
复制
 String MyIpAddress;

 void StartNetwork()
 {
     Print("Initializing Network");
     if (Ethernet.begin(mac) == 0) {
     while (1) {
       Print("Failed to configure Ethernet using DHCP");
       delay(10000);
     }
   }
   Serial.println(Ethernet.localIP());        //displays: 192.168.80.134
   MyIpAddress = String(Ethernet.localIP());
   Serial.println(MyIpAddress);               //displays: 2253433024
 }
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-01-27 14:07:34

结果显示,IPAddress属性是一个数组。显示IP地址的一种简单方法如下:

代码语言:javascript
复制
String DisplayAddress(IPAddress address)
{
 return String(address[0]) + "." + 
        String(address[1]) + "." + 
        String(address[2]) + "." + 
        String(address[3]);
}
票数 6
EN

Stack Overflow用户

发布于 2017-01-28 08:12:16

一种更轻量级的方法是:

代码语言:javascript
复制
char* ip2CharArray(IPAddress ip) {
  static char a[16];
  sprintf(a, "%d.%d.%d.%d", ip[0], ip[1], ip[2], ip[3]);
  return a;
}

一个IP地址最多有15个字符长,所以一个16字符的缓冲区就足够了.使其成为static,可以确保内存生命周期,因此您可以安全地返回它。

另一种方法:调用方可以提供字符缓冲区:

代码语言:javascript
复制
void ip2CharArray(IPAddress ip, char* buf) {
  sprintf(buf, "%d.%d.%d.%d", ip[0], ip[1], ip[2], ip[3]);
}
票数 2
EN

Stack Overflow用户

发布于 2022-05-23 10:10:14

只需使用toString()

display.drawString(0, 30, WiFi.localIP().toString());

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28119653

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档