免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 6680 | 回复: 8
打印 上一主题 下一主题

恳求一IP地址段转换算法函数 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-04-21 23:32 |只看该作者 |倒序浏览
恳求一IP地址段转换算法函数(SHELL调用)
我的程序太差,麻烦高人指点,谢谢!

函数的参数是这样的202.101.0.0-202.102.255.255格式.
要求是这样的.

将202.101.0.0-202.102.255.255这样的地址范围转换成202.101.0.0/15这样的带掩码的网段.
过程是这样的.
先202.101.0.0-202.102.255.255
第一位进行减202(后面)-202比较等于0记录A,
第二位进行减102(后面)-101比较等于1记录B,
第三位进行减255(后面)-0等于255记录C,
第四位进行减255(后面)-0等于255记录D,
然后将(A+1)(B+1)(C+1)(D+1)-2再转换成2进制,再读出一共多少位,再用32 -位数,就出来了后面的15
谢谢!

[ 本帖最后由 ability 于 2006-4-21 23:34 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2006-04-22 00:35 |只看该作者
感觉有点问题

202.101.0.0/15的IP段应该是202.100.0.0-202.101.255.255

这两个IP段没办法用掩码表示

202.100.0.0/15=202.101.0.0/15

能不能把具体的例子举出来呢?

还有,掩码中如果前面那一位不是255,接下去的那几位肯定是0,比如255.254.0.0,254.0.0.0,所以下面几位不用加于判断了

论坛徽章:
0
3 [报告]
发表于 2006-04-22 01:05 |只看该作者
原帖由 zmkun 于 2006-4-22 00:35 发表
感觉有点问题

202.101.0.0/15的IP段应该是202.100.0.0-202.101.255.255

这两个IP段没办法用掩码表示

202.100.0.0/15=202.101.0.0/15

能不能把具体的例子举出来呢?

还有,掩码中如果前面那一位不是 ...

谢谢!
举个例子大概说明程序的意思,没有精确去算这个是否对,错了还请包含,我的目的是求一个函数的写法,麻烦SHELL高手指教一下谢谢

论坛徽章:
0
4 [报告]
发表于 2006-04-22 09:27 |只看该作者
  1. awk -F "[.-]" 'BEGIN{
  2. i=1;a=1
  3. }
  4. {
  5. while(i<=4){a*=$(i+4)-$i+1;i++}
  6. }
  7. END{
  8. f=sprintf("%o",a-2)
  9. while(f/10>1){w+=3;f/=10}
  10. if(f>4)w+=3;else {if(f>2)w+=2;else w+=1}
  11. print $0"/"32-w
  12. }' bb
复制代码

写的有点乱。

论坛徽章:
0
5 [报告]
发表于 2006-04-22 22:49 |只看该作者
谢谢!

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
6 [报告]
发表于 2006-04-23 00:36 |只看该作者
我记得netman的精华里有类似的解决方案

论坛徽章:
0
7 [报告]
发表于 2009-05-20 15:28 |只看该作者

回复 #6 寂寞烈火 的帖子

他俩说的不是一回事

论坛徽章:
0
8 [报告]
发表于 2009-05-20 17:30 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
9 [报告]
发表于 2009-05-20 17:57 |只看该作者
我不做数通很多年,你的算法太麻烦,我用B类IP地址给你举个例子,你自己修改一下我觉得行

#! /bin/bash
function cal
{
        ip1=$(echo $1|cut -d. -f2)
        ip2=$(echo $2|cut -d. -f2)
        value=$(($ip2-$ip1))
        case $value in
        1)
        echo $1"/"15
        ;;
        3)
        echo $2"/"14
        ;;
        *)
        echo "error"
        esac
}
cal $1 $2


运行结果
-bash-3.2$ ./liang.sh 202.101.0.0 202.102.255.255
202.101.0.0/15
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP