ip地址,除了用字符串表示,不是还可以获取到Long型或byte[ ]型的表示吗
然后执行位运算就行了啊
然后执行位运算就行了啊
解决方案 »
- 序列化与反序列化的问题,请大神指教
- request多次tcp请求如何分开建立tcp连接呢?(同前一问题,解决者赠送50元话费)
- 我想找个关于win32 api的msdn中文的,谁帮忙找个下载地址,我找不到。
- 怎样改变Infragistics中的ultraLabel显示的风格
- 网页头显示问题
- TreeView节点展开问题
- 发布一个小工具软件(自动生成实体类和映射文件,用于Hibernate(NHibernate))
- 有什么好的第三方网格控件?
- 关于多线程中的timer事件问题!!!(十万火急,送高分)
- 如何随机动态的从DataTable中抽取n(1<n<total)条记录?
- 有关火车订票软件的提问,大神帮帮忙啊
- mdi窗体问题
再获取ip.Address,是个long型,然后计算
IPAddress ip = IPAddress.Parse("192.128.1.23");
IPAddress mask = IPAddress.Parse("255.255.0.0");byte[] bytes = ip.GetAddressBytes().Zip(mask.GetAddressBytes(), (i, m) => (byte)(i & m)).ToArray();
string result = new IPAddress(bytes).ToString(); // result = 192.168.0.0
{
int[] t = ip.Split('.').Select(x => int.Parse(x)).ToArray();
return (t[0] << 24) + (t[1] << 16) + (t[2] << 8) + t[3];
}
然后再用 & 位运算。
在计算机网络中,ip与掩码进行与运算,可以得到网络位。这种转换都是通过位操作实现的。
ipv4中,网络位、ip地址、掩码都是包括4个字段,每个字段8位,一共32位,表示为4个字节。原理就是把ip地址、掩码转换成32个0/1序列,进行与运算,就可以得到网络位。ip和掩码通常自然表示成192.168.1.23,是一个字符串,点(.)分割4个字段每个字段是一个十进制数字。可以使用c#的convert类进行转换。可以自己使用字符串的分割方法进行转换。最后,封装成一个函数,参数是ip和掩码,返回值是网络位,就OK了