免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 4754 | 回复: 13

12及13楼方案结贴。。。如何把点分十进制的掩码转化为 缩写形式 [复制链接]

论坛徽章:
0
发表于 2010-10-19 14:36 |显示全部楼层
本帖最后由 skylove 于 2010-10-20 12:16 编辑

如题,把类似 /255.255.255.0 转化为 /24  ;/255.255.240.0 转化为 /20  ?

我目前用的笨办法 。。。vi 里用
  1. :%s/\/255.255.255.0/\/24/g
复制代码
这样的方式来操作的,缺点就是要执行多次,而且还是非自动化的;

当前想到的方案是

用case语句将 255=8,254=7,252=6 , 248=5,240=4。。128=1 这样对应起来,将 255.255.240.0 变成类似  8.8.4.0  再转为 8+8+4+0 到 bc里去得到答案。。。

想请问有更好的解决方案么?

论坛徽章:
16
IT运维版块每日发帖之星
日期:2015-08-24 06:20:00综合交流区版块每日发帖之星
日期:2015-10-14 06:20:00IT运维版块每日发帖之星
日期:2015-10-25 06:20:00IT运维版块每日发帖之星
日期:2015-11-06 06:20:00IT运维版块每日发帖之星
日期:2015-12-10 06:20:00平安夜徽章
日期:2015-12-26 00:06:302016猴年福章徽章
日期:2016-02-18 15:30:34IT运维版块每日发帖之星
日期:2016-04-15 06:20:00IT运维版块每日发帖之星
日期:2016-05-21 06:20:00综合交流区版块每日发帖之星
日期:2016-08-16 06:20:002015七夕节徽章
日期:2015-08-21 11:06:17IT运维版块每日发帖之星
日期:2015-08-14 06:20:00
发表于 2010-10-19 14:42 |显示全部楼层
回复 1# skylove


   你ID那么老,应该知道ipcalc这个吧?

论坛徽章:
1
技术图书徽章
日期:2014-04-24 15:53:17
发表于 2010-10-19 14:43 |显示全部楼层
/24 /20的原理是什么

你把地址转换成二进制,然后再数后面0的个数就可以了吧,

论坛徽章:
0
发表于 2010-10-19 14:51 |显示全部楼层
回复  skylove


   你ID那么老,应该知道ipcalc这个吧?
expert1 发表于 2010-10-19 14:42


惭愧,确实不知道。。。孤陋寡闻了。。。

测试了一下,能满足偶需求

ipcalc -p  ip地址 255.254.0.0

这样即可

多谢了

论坛徽章:
16
IT运维版块每日发帖之星
日期:2015-08-24 06:20:00综合交流区版块每日发帖之星
日期:2015-10-14 06:20:00IT运维版块每日发帖之星
日期:2015-10-25 06:20:00IT运维版块每日发帖之星
日期:2015-11-06 06:20:00IT运维版块每日发帖之星
日期:2015-12-10 06:20:00平安夜徽章
日期:2015-12-26 00:06:302016猴年福章徽章
日期:2016-02-18 15:30:34IT运维版块每日发帖之星
日期:2016-04-15 06:20:00IT运维版块每日发帖之星
日期:2016-05-21 06:20:00综合交流区版块每日发帖之星
日期:2016-08-16 06:20:002015七夕节徽章
日期:2015-08-21 11:06:17IT运维版块每日发帖之星
日期:2015-08-14 06:20:00
发表于 2010-10-19 14:53 |显示全部楼层
数制转换,COPY记号一下

$echo "obase=16;255"|bc
FF
$echo "obase=2;255"|bc
11111111
$echo "obase=2;ibase=16;FF"|bc
11111111
$echo "obase=16;ibase=10;255"|bc
FF

echo $((2#101))
5

echo $((16#a))
10

论坛徽章:
0
发表于 2010-10-19 15:00 |显示全部楼层
数制转换,COPY记号一下

$echo "obase=16;255"|bc
FF
$echo "obase=2;255"|bc
11111111
$echo "obas ...
expert1 发表于 2010-10-19 14:53



这个方式我一开始考虑过,毕竟是正统的算法,后来觉得相对于ip转写这个特定需求而言。。。效率太低而且繁复所以放弃了

论坛徽章:
16
IT运维版块每日发帖之星
日期:2015-08-24 06:20:00综合交流区版块每日发帖之星
日期:2015-10-14 06:20:00IT运维版块每日发帖之星
日期:2015-10-25 06:20:00IT运维版块每日发帖之星
日期:2015-11-06 06:20:00IT运维版块每日发帖之星
日期:2015-12-10 06:20:00平安夜徽章
日期:2015-12-26 00:06:302016猴年福章徽章
日期:2016-02-18 15:30:34IT运维版块每日发帖之星
日期:2016-04-15 06:20:00IT运维版块每日发帖之星
日期:2016-05-21 06:20:00综合交流区版块每日发帖之星
日期:2016-08-16 06:20:002015七夕节徽章
日期:2015-08-21 11:06:17IT运维版块每日发帖之星
日期:2015-08-14 06:20:00
发表于 2010-10-19 15:04 |显示全部楼层
回复 6# skylove


    关于IP计算的还是ipcalc来的方便,实在是IT民工居家旅行必备。

写自己造轮子搞不好是个歪轮子

论坛徽章:
0
发表于 2010-10-19 15:07 |显示全部楼层
回复  skylove


    关于IP计算的还是ipcalc来的方便,实在是IT民工居家旅行必备。

写自己造轮子搞 ...
expert1 发表于 2010-10-19 15:04



    惭愧,以前一直都是只有几十条,而且地址蛮规范的,几下用vi就替换完毕了。。。一直也没起心去找找好工具。。。 这次一次对付600多条,才来补课。。。多谢兄弟了~~~

论坛徽章:
0
发表于 2010-10-19 15:36 |显示全部楼层
刚才造了个轮子,然后计算了一个IP和MARK的按位与,杯具的效率啊……

论坛徽章:
0
发表于 2010-10-19 16:40 |显示全部楼层
一点思路,查表法,如果系统不能安装ipcalc的话,自己写一个脚本全局替换也没多少时间,毕竟 mask 全表只有 /0 - /32
0.0.0.0 /0
......
255.255.255.255 /32

给一个netmask input , 输出一个 对应 CIDR output
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP