我试图将设备的IP地址分配给一个字符串变量。当我使用Serial.println(Ethernet.localIP())进行测试时,它会以八进制显示IP地址。如果我使用String(Ethernet.localIP());,那么它将显示为十进制。
是否有方法将八进制格式赋值给变量?
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
}发布于 2015-01-27 14:07:34
结果显示,IPAddress属性是一个数组。显示IP地址的一种简单方法如下:
String DisplayAddress(IPAddress address)
{
return String(address[0]) + "." +
String(address[1]) + "." +
String(address[2]) + "." +
String(address[3]);
}发布于 2017-01-28 08:12:16
一种更轻量级的方法是:
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,可以确保内存生命周期,因此您可以安全地返回它。
另一种方法:调用方可以提供字符缓冲区:
void ip2CharArray(IPAddress ip, char* buf) {
sprintf(buf, "%d.%d.%d.%d", ip[0], ip[1], ip[2], ip[3]);
}发布于 2022-05-23 10:10:14
只需使用toString()
display.drawString(0, 30, WiFi.localIP().toString());
https://stackoverflow.com/questions/28119653
复制相似问题