方法1:php语言
PHP中提供了专门的函数用来将ip转换为整型:ip2long以及long2ip
$ip="218.65.110.134"; echo ip2long($ip); print long2ip(‘123456789‘);
方法2:Python
python有两种方法:
>>> import socket >>> import struct >>> socket.inet_ntoa(struct.pack(‘I‘, socket.htonl(123456789))) ‘7.91.205.21‘ >>> socket.ntohl(struct.unpack(‘I‘, socket.inet_aton(str(‘7.91.205.21‘)))[0]) 123456789L推荐使用下面这种方法:
>>> ip = lambda x: ‘.‘.join([str(x/(256**i)%256) for i in range(3,-1,-1)]) >>> ip(123456789) ‘7.91.205.21‘ >>> ip = lambda x:sum([256**j*int(i) for j,i in enumerate(x.split(‘.‘)[::-1])]) >>> ip(‘7.91.205.21‘) 123456789这一种方法使用lambda构造匿名函数。有关匿名函数lambda以及enumerate的用法参见:
方法3:Shell
#!/bin/bash #ip2int:ip地址转整型 #int2ip:整型转ip function ip2int(){ A=$(echo $1 | cut -d ‘.‘ -f1) B=$(echo $1 | cut -d ‘.‘ -f2) C=$(echo $1 | cut -d ‘.‘ -f3) D=$(echo $1 | cut -d ‘.‘ -f4) result=$(($A<<24|$B<<16|$C<<8|$D)) echo $result } function int2ip(){ A=$((($1 & 0xff000000 ) >>24)) B=$((($1 & 0x00ff0000)>>16)) C=$((($1 & 0x0000ff00)>>8)) D=$(($1 & 0x000000ff)) result=$A.$B.$C.$D echo $result } a=‘7.91.205.21‘ b=123456789 ip2int $a int2ip $bip2int方法中使用左移位操作;int2ip方法中先使用位与运算,再作位右移。
方法4:Mysql
SELECT INET_ATON(‘1.1.1.1‘) as IP; SELECT INET_NTOA(‘123456789‘) as IP;INET_ATON方法用于将点分十进制的ip地址转换为整型;
INET_NTOA方法用于将整型转换为对应的点分十进制的ip地址。
本文为Eliot原创,转载请注明出处:http://blog.csdn.net/xyw_blog/article/details/18358071