是否有任何.net框架方法执行INET_ATON()

本文关键字:INET ATON 执行 方法 任何 net 框架 是否 | 更新日期: 2023-09-27 17:49:27

address = '174.36.207.186'
( o1, o2, o3, o4 ) = address.split('.')
integer_ip =   ( 16777216 * o1 )
             + (    65536 * o2 )
             + (      256 * o3 )
             +              o4

是否有任何.net框架方法执行INET_ATON()

string s = "174.36.207.186";
uint i = s.Split('.')
          .Select(uint.Parse)
          .Aggregate((a, b) => a * 256 + b);

您可以将数字解析为字节数组,然后使用BitConverter.ToInt32将它们组合成int:

byte[] parts = address.Split('.').Select(Byte.Parse).ToArray();
if (BitConverter.IsLittleEndian) {
  Array.Reverse(parts);
}
int ip = BitConverter.ToInt32(parts, 0);

您可以将字符串解析为IPAddress实例,然后访问Address属性:

long result = IPAddress.Parse("174.36.207.186").Address;

注意,这将产生一个编译器警告(过时的属性),因为它不适用于IPv6。