How do you parse an IP address string to a uint value in C#?

后端 未结 9 761
庸人自扰
庸人自扰 2020-12-30 13:44

I\'m writing C# code that uses the windows IP Helper API. One of the functions I\'m trying to call is \"GetBestInterface\" that takes a \'uint\' representation of an IP. Wha

9条回答
  •  南笙
    南笙 (楼主)
    2020-12-30 14:01

    Complete solution:

    public static uint IpStringToUint(string ipString)
    {
        var ipAddress = IPAddress.Parse(ipString);
        var ipBytes = ipAddress.GetAddressBytes();
        var ip = (uint)ipBytes [0] << 24;
        ip += (uint)ipBytes [1] << 16;
        ip += (uint)ipBytes [2] <<8;
        ip += (uint)ipBytes [3];
        return ip;
    }
    
    public static string IpUintToString(uint ipUint)
    {
        var ipBytes = BitConverter.GetBytes(ipUint);
        var ipBytesRevert = new byte[4];
        ipBytesRevert[0] = ipBytes[3];
        ipBytesRevert[1] = ipBytes[2];
        ipBytesRevert[2] = ipBytes[1];
        ipBytesRevert[3] = ipBytes[0];
        return new IPAddress(ipBytesRevert).ToString();
    }
    

    Reverse order of bytes:

    public static uint IpStringToUint(string ipString)
    {
        return BitConverter.ToUInt32(IPAddress.Parse(ipString).GetAddressBytes(), 0);
    }
    
    public static string IpUintToString(uint ipUint)
    {
        return new IPAddress(BitConverter.GetBytes(ipUint)).ToString();
    }
    

    You can test here:

    https://www.browserling.com/tools/dec-to-ip

    http://www.smartconversion.com/unit_conversion/IP_Address_Converter.aspx

    http://www.silisoftware.com/tools/ipconverter.php

提交回复
热议问题