Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/272.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何显示IP地址的整数值_C#_Vb.net_Ip Address - Fatal编程技术网

C# 如何显示IP地址的整数值

C# 如何显示IP地址的整数值,c#,vb.net,ip-address,C#,Vb.net,Ip Address,我正在查看System.Net命名空间,它有一个可以使用的IPAddress实例。这有一个解析方法,您可以使用该方法将字符串解析为IPInstance,然后使用Address属性为您提供long值 然而 返回的数字不是真正的转换 e、 g.对于IP 58.0.0.0,System.Net命名空间给我的值是58。。。 实际上,整数值应该是973078528 有人能告诉我正确的代码吗 公式应该是。。(适用于ip 192.1.20.10) 192*(256*256*256)+1*(256*256)+2

我正在查看System.Net命名空间,它有一个可以使用的IPAddress实例。这有一个解析方法,您可以使用该方法将字符串解析为IPInstance,然后使用Address属性为您提供long值

然而

返回的数字不是真正的转换

e、 g.对于IP 58.0.0.0,System.Net命名空间给我的值是58。。。 实际上,整数值应该是973078528

有人能告诉我正确的代码吗

公式应该是。。(适用于ip 192.1.20.10)

192*(256*256*256)+1*(256*256)+20*(256)+10

此公式正确的原因是它返回的数字可以在>=和中使用,请参见

选择的答案中列出了示例代码

e;f、 b

选择的答案中列出了示例代码


e;f、 b

您看到的似乎是一个endian问题

作为一般函数,如果您的IP地址是
a.B.C.D
,则您所追求的值是:

A << 24 +    (= A * 16777216)
B << 16 +    (= B *    65536)
C <<  8 +    (= C *      256)
D

A您看到的似乎是endian问题

作为一般函数,如果您的IP地址是
a.B.C.D
,则您所追求的值是:

A << 24 +    (= A * 16777216)
B << 16 +    (= B *    65536)
C <<  8 +    (= C *      256)
D

A这可能行得通,我们会试试看

public double IPAddressToNumber(string IPaddress)
    {
        int i;
        string [] arrDec;
        double num = 0;
        if (IPaddress == "")
        {
            return 0;
        }
        else
        {
            arrDec = IPaddress.Split('.');
            for(i = arrDec.Length - 1; i >= 0 ; i = i -1)
                {
                    num += ((int.Parse(arrDec[i])%256) * Math.Pow(256 ,(3 - i )));
                }
            return num;
        }
    }

这可能管用,我会试试看

public double IPAddressToNumber(string IPaddress)
    {
        int i;
        string [] arrDec;
        double num = 0;
        if (IPaddress == "")
        {
            return 0;
        }
        else
        {
            arrDec = IPaddress.Split('.');
            for(i = arrDec.Length - 1; i >= 0 ; i = i -1)
                {
                    num += ((int.Parse(arrDec[i])%256) * Math.Pow(256 ,(3 - i )));
                }
            return num;
        }
    }

这个问题需要一个C#解决方案。这个问题是针对.Net的。我不明白你所说的“BitConverter.ToInt32(System.Net.IPAddress.Parse(address).GetAddressBytes(),0);”是一个.Net解决方案。这个问题和公认的答案对我的问题不正确。这个问题要求C解决方案。这个问题是针对.Net的。我不明白你所说的“BitConverter.ToInt32(System.Net.IPAddress.Parse(address).GetAddressBytes(),0);”是一个.Net解决方案。这个问题和公认的答案对我的问题不正确。重复。上一个问题提供的答案满足了问题,我的问题略有不同,而另一个问题提供的答案对我来说不正确。重复。上一个问题提供的答案满足了这个问题,我的问题略有不同,而另一个问题提供的答案对我来说不正确。您的代码应该返回long或Int64而不是double。在循环中,只需将上一次迭代的值乘以256,然后添加下一个八位字节。保存所有对Math.pow的调用!代码应该返回long或Int64而不是double。在循环中,只需将上一次迭代的值乘以256,然后再加上下一个八位字节。保存所有对Math.pow的调用!