文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>awk实现IP数字转换

awk实现IP数字转换

时间:2010-08-16  来源:wood016

awk实现IP数字转换   因工作需要需要将IP地址转成数字形式存储,写了一个awk脚本实现.   源码如下:   mounix.com:~> cat ipconvert
-----------------------------------------------------------
#!/bin/bash
#
#
NUM2IP () {
echo  |awk -v IPNUM=$1 '{ for (I = 4 ; I >=1; I-- ){
  printf (IPNUM % (256^I)- (IPNUM % 256^(I-1)))/256^(I-1)
  if (I >1 ) printf "."
}
printf "\n"
}'
}
IP2NUM () {
echo $1 |awk  'BEGIN{NUM=0 ; FS="."}{for (I = NF ; I >=1; I-- )
 NUM=$I*256^(NF-I)+NUM
}END{printf "%d\n",NUM}'
}
if [ $# -ne 2 ] ;then
echo "Usage: $0 -c ip_address or $0 -r num2convert"
exit 1
fi
if [ $1 = "-c" ] ; then
IP2NUM $2
elif [ $1 = "-r" ] ; then
NUM2IP $2
fi
-----------------------------------------------------------
mounix.com:~> 运行结果如下: mounix.com:~> sh ipconvert -c 192.168.1.1
3232235777
mounix.com:~> sh ipconvert -r 3232235777
192.168.1.1
mounix.com:~>
==== 原理: IP分成四个字段,每个字段*256的N次方相加得到数字   192.168.1.1
转成数字:
192*256^3 + 168*256^2 + 1*256^1 + 1*256^0=3232235777   3232235777
转成IP:
I=4,3,2,1 按以下公式运算. %:取模 ^:求幂 /:除法 (IPNUM % (256^I)- (IPNUM % 256^(I-1)))/256^(I-1)  
相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载