You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Arduino环境下将字符串格式IP地址转换为IPAddress对象的方法

Arduino逗号分隔String类型IP转IPAddress对象方法

IPAddress类型的构造函数支持直接传入4个0~255的整数作为IP四段的值,所以转换的核心是把逗号分隔的String字符串拆分为四个合法的整数值,再传入构造函数即可。

基础实现示例

// 待转换的逗号分隔IP字符串
String rawIpStr = "192,168,1,1";
uint8_t ipSegments[4];
int currentSegIndex = 0;
int segStartPos = 0;

// 遍历字符串拆分四段IP数值
for (int i = 0; i <= rawIpStr.length(); i++) {
  // 遇到逗号或者到字符串末尾时,处理当前分段
  if (rawIpStr.charAt(i) == ',' || i == rawIpStr.length()) {
    String segStr = rawIpStr.substring(segStartPos, i);
    ipSegments[currentSegIndex] = segStr.toInt();
    currentSegIndex++;
    segStartPos = i + 1;
    // 拆满四段直接停止,避免数组溢出
    if (currentSegIndex >= 4) break;
  }
}

// 生成IPAddress对象
IPAddress targetIp(ipSegments[0], ipSegments[1], ipSegments[2], ipSegments[3]);

你可以通过串口打印验证转换结果:

Serial.begin(115200);
Serial.print("转换完成的IP地址:");
Serial.println(targetIp);

可复用工具函数封装

可以把转换逻辑封装为通用函数,同时支持自定义分隔符,适配逗号、点等不同分隔格式的IP字符串:

IPAddress strToIp(String ipStr, char separator = ',') {
  uint8_t ipSegs[4] = {0, 0, 0, 0};
  int segIndex = 0;
  int startPos = 0;
  for (int i = 0; i <= ipStr.length() && segIndex < 4; i++) {
    if (ipStr.charAt(i) == separator || i == ipStr.length()) {
      ipSegs[segIndex] = ipStr.substring(startPos, i).toInt();
      segIndex++;
      startPos = i + 1;
    }
  }
  return IPAddress(ipSegs[0], ipSegs[1], ipSegs[2], ipSegs[3]);
}

// 逗号分隔IP调用示例
IPAddress myIp1 = strToIp("192,168,1,100");
// 点分隔IP调用示例
IPAddress myIp2 = strToIp("192.168.1.100", '.');

注意事项

  • 输入的IP字符串需要保证格式合法:四段0~255之间的整数,仅用指定分隔符分隔,无多余空格、特殊字符
  • 如果输入字符串格式不合法,转换会默认把无效段赋值为0,不会触发程序崩溃

内容的提问来源于stack exchange,提问作者Wilson Filho

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 00:51:03