高手进来看一下,这个是怎么计算出来的? 去google搜索一下子网掩码吧计算不是很复杂 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 61.10001100.00000000.00000000 -> 61.140.0.0/1461.10010000.00000000.00000000 -> 61.144.0.0/1561.10010010.00000000.00000000 -> 61.146.0.0/16 14, 15, 16分别指的是网络地址的长度。开始的IP是61.140.0.0(即:00111101.10001100.00000000.00000000), 所以如果你需要过滤出你的子网地址,mask 为00000000.00000011.11111111.11111111。你可以数一下,此时左边的0为14个。你用这个就可以得到你的子网地址了。因为终点地址是61.10010010.11111111.11111111(00111101。10010010。11111111。11111111)。所以此时mask是00000000.00000000.11111111.11111111).即61.146.0.0/16。16指的是左边0的个数。15是当IP地址为61.145.***.***时,mask应该为15。我的回答应该算详细了吧。 manonroad(唧唧嘎嘎) ,你好!61.145.0.061.10010001.00000000.00000000的掩码为什么是15?用你给的方法,怎么计算这个呢?起始地址59.32.0.000111011.00100000.00000000.00000000终止地址59.42.255.25500111011.00101010.11111111.11111111正确答案:59.32.0.0/1359.40.0.0/1559.42.0.0/16 我写了程序,核心算法如下,大家帮我看看,谢了!//核心while(reader.Read())//循环读取记录集{ StartAddr=reader["start_ip"].ToString();//起始IP EndAddr=reader["end_ip"].ToString();//终止IP TempAddr=StartAddr; while(!CheckEqual(TempAddr,EndAddr))//中止条件为TempAddr和EndAddr相等 { counter=0; StartAddrF1=FFirst1(StartAddr);//从左往右数,最后一个1的位数 TempAddr=Change10(StartAddr,StartAddrF1+1,32);//将StartAddr后面的所有0置为1 while(CheckBigOne(TempAddr,EndAddr))//如果大于终止IP,则循环 { counter++;//计数器,记录变更的次数 TempAddr=Change10(TempAddr,StartAddrF1+counter,StartAddrF1+counter); } SubNum=StartAddrF1+counter;//子网掩码 m_streamWriter.WriteLine (" "+StartAddr+"/"+SubNum.ToString());//输出到文件 Console.WriteLine(" "+StartAddr+"/"+SubNum.ToString());//输出到控制台 StartAddr=Add1(TempAddr); }} 没有绝对的长度,主要是要看你需要怎么样划分子网。比如一个c类地址你可以分为4个子网子网掩码为255.255.255.192,每个子网的ip范围可以是0-63,64-127,128-191,192-255 哈哈,是我一时笔误。应为61.144.0.0/15.还是应该把所有的IP地址一段一段地排列出来,然后找到用合适mask找出相应的子网号。我的答案写出来是一样的同楼上。关键就是怎样能够取出子网号。因为在网络里先是寻找网络号,找到相应的网络后根据子网掩码找到相应的host。原理就是网络地址与掩码相与的到子网号。前面的连0过滤掉网络号,剩下自然就是子网号了。 起始地址 61.140.0.0 61.10001100.00000000终止地址 61.146.255.255 61.10010010.11111111.11111111 正确答案: 61.140.0.0/14 61.144.0.0/15 61.146.0.0/16------------------------------------------------〉我想61.140.0.0 61.144.0.0 61.146.0.0这三个地址肯定是已知的,要你求出子网掩码。这三个地址意思是61.140.0.0~61.143.255.255是一个网段(即一个子网)。类似的,61.144.0.0 ~61.145.255.255也是一个子网。要求的就是怎样区分不同子网:第一段:00111101.10001100.00000000.00000000~ 00111101.10001111.11111111.11111111 显然,要想分辩出哪些ip是此子网的,只要与11111111.11111100.00000000.00000000作与运算即可。(也就是说,此网段可以容纳2的18次方减2的ip地址)第二段分析类似。 AllenTing(我爱吃醋),你好!61.140.0.0/14 61.144.0.0/15 61.146.0.0/16都是计算出来的。 传说指针效率高,网友帮忙把这个简单方法改成指针的。。。 表复制的问题 大哥们,救一下吧!请教一个闷了我好多时间的问题? DataList(WEB)难题,高手请进,急! 一道关于算法的面试题 c# winform程序加载地图 几个问题,请大家帮忙解答一下,谢谢!在线等 C#.net中,如何设置textbox只能输入数字? 关于调用程序集的问题 只去除HTML标记中的<A></A>,再将文本插入ACCESS数据库中,可引起引号的问题,插入数据库时出错...要怎么才能在引号方面改才能成功插入. 想在DataGrid中输出表格?可以吗?? 关于contextmenu的问题
-> 61.140.0.0/1461.10010000.00000000.00000000
-> 61.144.0.0/1561.10010010.00000000.00000000
-> 61.146.0.0/16
61.10010001.00000000.00000000的掩码为什么是15?用你给的方法,怎么计算这个呢?起始地址59.32.0.0
00111011.00100000.00000000.00000000终止地址59.42.255.255
00111011.00101010.11111111.11111111正确答案:
59.32.0.0/13
59.40.0.0/15
59.42.0.0/16
//核心
while(reader.Read())//循环读取记录集
{
StartAddr=reader["start_ip"].ToString();//起始IP
EndAddr=reader["end_ip"].ToString();//终止IP
TempAddr=StartAddr;
while(!CheckEqual(TempAddr,EndAddr))//中止条件为TempAddr和EndAddr相等
{
counter=0;
StartAddrF1=FFirst1(StartAddr);//从左往右数,最后一个1的位数
TempAddr=Change10(StartAddr,StartAddrF1+1,32);//将StartAddr后面的所有0置为1
while(CheckBigOne(TempAddr,EndAddr))//如果大于终止IP,则循环
{
counter++;//计数器,记录变更的次数
TempAddr=Change10(TempAddr,StartAddrF1+counter,StartAddrF1+counter);
} SubNum=StartAddrF1+counter;//子网掩码
m_streamWriter.WriteLine (" "+StartAddr+"/"+SubNum.ToString());//输出到文件
Console.WriteLine(" "+StartAddr+"/"+SubNum.ToString());//输出到控制台
StartAddr=Add1(TempAddr);
}
}
比如一个c类地址你可以分为4个子网
子网掩码为255.255.255.192,每个子网的ip范围可以是0-63,64-127,128-191,192-255
哈哈,是我一时笔误。
应为61.144.0.0/15.还是应该把所有的IP地址一段一段地排列出来,然后找到用合适mask找出相应的子网号。我的答案写出来是一样的同楼上。关键就是怎样能够取出子网号。因为在网络里先是寻找网络号,找到相应的网络后根据子网掩码找到相应的host。原理就是网络地址与掩码相与的到子网号。前面的连0过滤掉网络号,剩下自然就是子网号了。
61.10001100.00000000终止地址 61.146.255.255
61.10010010.11111111.11111111 正确答案: 61.140.0.0/14
61.144.0.0/15
61.146.0.0/16
------------------------------------------------〉
我想61.140.0.0
61.144.0.0
61.146.0.0
这三个地址肯定是已知的,要你求出子网掩码。这三个地址意思是61.140.0.0~61.143.255.255是一个网段(即一个子网)。类似的,61.144.0.0 ~61.145.255.255也是一个子网。
要求的就是怎样区分不同子网:
第一段:00111101.10001100.00000000.00000000~
00111101.10001111.11111111.11111111
显然,要想分辩出哪些ip是此子网的,只要与11111111.11111100.00000000.00000000作与运算即可。(也就是说,此网段可以容纳2的18次方减2的ip地址)
第二段分析类似。
61.144.0.0/15
61.146.0.0/16
都是计算出来的。