社区
网络编程
帖子详情
100分~求一ip掩码的算法
fiter2004
2006-06-22 11:08:02
如ip段:2.2.2.2-2.2.2.8可以拆分成2.2.2.2/31 2.2.2.4/30 2.2.2.8/32三个掩码格式,现求任意ip段拆分成如上掩码格式的算法~
谢谢
...全文
182
8
打赏
收藏
100分~求一ip掩码的算法
如ip段:2.2.2.2-2.2.2.8可以拆分成2.2.2.2/31 2.2.2.4/30 2.2.2.8/32三个掩码格式,现求任意ip段拆分成如上掩码格式的算法~ 谢谢
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
fiter2004
2006-06-26
打赏
举报
回复
谢了
hijack
2006-06-23
打赏
举报
回复
程序没错,你试就知道了(第3行是unsigned int i)
使用的时候要把IP转成int,如ip2.2.2.2转成0x02020202,ip2.2.2.8转成0x02020208
计算后再把int转换成IP格式,
fiter2004
2006-06-23
打赏
举报
回复
不好意思,可能我还没说清楚,我要的是精确的ip段的掩码,2.2.2.2的8位二进制最后一个2表示为0000 0010,
如果掩码为/28(最后8位11110000),则表示的ip段是2.2.2.0-2.2.2.15,超出了所要求的2.2.2.2-2.2.2.8范围
如果掩码为/29(最后8位11111000),则表示的ip段是2.2.2.0-2.2.2.7,也不在范围内
掩码/30(最后8位11111100),则是2.2.2.0-2.2.2.3也是不对的
所以只能分成多个掩码表示,就像上边说的
2.2.2.2/31(11111110)包含2.2.2.2和2.2.2.3两个ip,
2.2.2.4/30(11111100)包含2.2.2.4-2.2.2.7四个ip,
2.2.2.8/32(11111111)代表2.2.2.8本身
hijack
2006-06-22
打赏
举报
回复
现写了一段,计算32位数掩码,IP转换成unsigned int即可
unsigned int n1 = 2;
unsigned int n2 = 8;
for (int i = n1; i <= n2; ) {
unsigned int nShift, nMask, nDelta;
for (unsigned int k = 0; k < 32; k++) {
unsigned int ns = k;
unsigned int nm = i & (0xffffffff << ns);
unsigned int nd = 1 << ns;
if (i != nm || i + nd - 1 > n2) break;
nShift = ns;
nMask = nm;
nDelta = nd;
}
cout << nMask << "/" << 32 - nShift << endl;
i = i + nDelta;
}
nuaawenlin
2006-06-22
打赏
举报
回复
掩码是从主机地址分离出子网的地址
所以需要判断你的ip属于那一类,然后得到主机地址的长度,然后得到掩码的长度
DentistryDoctor
2006-06-22
打赏
举报
回复
拔码的长度,从左往右数,是多少就有多少个二进制的1,
oyljerry
2006-06-22
打赏
举报
回复
本来掩码长度就决定了地址段的范围
fiter2004
2006-06-22
打赏
举报
回复
是否表述不够清楚,ip掩码可以表示可以用/24等形式,如2.2.2.0-2.2.2.255,可以表示为2.2.2.0/24,代表包含所有2.2.2.x网段的ip,但如上边的2.2.2.2-2.2.2.8这个ip段,无法只用一个/24之类的掩码精确表示,须划分为多个掩码:
2.2.2.2/31包含2.2.2.2和2.2.2.3两个ip,
2.2.2.4/30包含2.2.2.4-2.2.2.7四个ip,
2.2.2.8/32代表2.2.2.8本身
我想要的是求任意一个ip段如何划分掩码的算法~
希望各位大虾帮忙~~~
vc 添加打开文件对话框并读取文件
.创建打开文件对话框: CFileDialog dlg(TRUE,//TRUE是创建打开文件对话框,FALSE则创建的是保存文件对话框 ".txt",//默认的打开文件的类型 NULL,//默认打开
VC添加打开文件对话框并读取数据
1.创建打开文件对话框: CFileDialog dlg(TRUE,//TRUE是创建打开文件对话框,FALSE则创建的是保存文件对话框 ".txt",//默认的打开文件的类型 NULL,
网络编程
18,356
社区成员
64,165
社区内容
发帖
与我相关
我的任务
网络编程
VC/MFC 网络编程
复制链接
扫一扫
分享
社区描述
VC/MFC 网络编程
c++
c语言
开发语言
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章