parseIpv4 function

int? parseIpv4(
  1. String s
)

Parses IPv4 "a.b.c.d" into int (big-endian). Returns null if invalid. Audited: 2026-06-13

Implementation

int? parseIpv4(String s) {
  // A valid dotted-quad has exactly four octets; anything else is malformed.
  final List<String> parts = s.split('.');
  if (parts.length != _ipv4OctetCount) return null;
  int address = 0;
  // Pack the octets big-endian: each octet shifts the accumulator left 8 bits
  // before OR-ing the next in, so "1.2.3.4" becomes 0x01020304. Require a
  // canonical decimal octet (no sign/whitespace/leading zero) and 0..255.
  for (final String p in parts) {
    if (!_ipv4OctetPattern.hasMatch(p)) return null;
    final int? n = int.tryParse(p);
    if (n == null || n < _ipv4OctetMin || n > _ipv4OctetMax) return null;
    address = (address << _bitsPerOctet) | n;
  }
  return address;
}