求帮忙换算几个带掩码格式的 IP 地址(求个鱼,渔我自己琢磨吧)

2014-11-29 14:20:39 +08:00
 70599
就是这种192.168.1.0/24这样的格式。

请帮忙把下面的2个IP地址合并成1行带掩码格式的IP地址:
104.223.130.170
104.223.134.229

请帮忙把下面的4个IP地址合并成1行带掩码格式的IP地址:
104.127.92.146
104.127.92.246
104.127.93.119
104.127.94.204

谢谢各位朋友。
2513 次点击
所在节点    问与答
12 条回复
Automan
2014-11-29 14:25:58 +08:00
全部换成二进制,看哪几位不同
Automan
2014-11-29 14:26:11 +08:00
然后32-不同的位数
oott123
2014-11-29 15:00:28 +08:00
Google:子网计算器
70599
2014-11-29 15:56:49 +08:00
@Automan 感谢回复。

@oott123 用到了,谢谢。
scys
2014-11-29 16:07:13 +08:00
随便换算?
1. 104.223.0.0/16
2. 104.127.0.0/16
嗯嗯,16直接上,保证包括了这几个段~
aa65535
2014-11-29 16:07:45 +08:00
104.223.128.0/21 104.223.128.1 - 104.223.135.254
104.127.92.0/22 104.127.92.1 - 104.127.95.254
tywtyw2002
2014-11-29 17:09:57 +08:00
没啥难度,bits操作写的比较乱,因为没啥好思路。
python下面ip解/打包可以用(?:un|)pack + socket.(?:ntoa|aton)来做

https://gist.github.com/tywtyw2002/9d09e22536c661fde556
70599
2015-01-15 23:49:52 +08:00
@tywtyw2002 使用这个py计算['103.28.248.91', '103.28.249.91'],得到的结果是103.28.248.0/24,似乎包含不到103.28.249.91,为什么呢?
70599
2015-01-15 23:51:28 +08:00
@tywtyw2002 感觉正确结果应该是103.28.248.0/23
70599
2015-01-15 23:56:27 +08:00
@tywtyw2002 又把计算输入内容改成['103.28.248.91', '103.28.250.91']试了一下,这样可以得出103.28.248.0/23,可是这样又包含不到103.28.250.91了。
tywtyw2002
2015-01-22 11:55:26 +08:00
@70599

print "%s/%d" % (r_x(x(l[0]) & (2 ** 32 - 1) << mask), (32 - mask))

改成
print "%s/%d" % (r_x(x(l[0]) & (2 ** 32 - 1) << mask), (31 - mask))
70599
2015-01-22 13:22:54 +08:00
@tywtyw2002 感谢回复。
计算结果正常了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/150203

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX