前言
最近需要方便ip存储和查询,所有的数据都转换为10进制,今天就来记录一下,方便以后也进行操作,处理数据也会方便很多
php的ip十进制转换
第一种方法
public function ipToLong(){
$ip = $_SERVER['REMOTE_ADDR'];
$ip = explode('.', $ip);
$ip = array_reverse($ip);//数组反转
$r = 0;
for($i=0,$j=count($ip); $i<$j; $i++){
$r += $ip[$i] * pow(256, $i);
}
$r = sprintf("%u", $r);
echo $r;
}
第二种方法
public function ipToLong(){
$ip = $_SERVER['REMOTE_ADDR'];
$ip = explode('.',$ip);
$r = ($ip[0] << 24) | ($ip[1] << 16) | ($ip[2] << 8) | $ip[3];
if($r < 0) $r += 4294967296;
echo $r ;
}
第三种方法
echo ip2long('192.168.1.1');//使用php函数
十进制转为ip php方法
function Long2DotIP ($IPNum) {
if ($IPNum == "") {
return "0.0.0.0";
}
else {
return (($IPNum / 16777216) % 256) . "." . (($IPNum / 65536) % 256) . "." . (($IPNum / 256) % 256) . "." . ($IPNum % 256);
}
}
function intToIP($iIP){
$xor = array(0x000000ff,0x0000ff00,0x00ff0000,0xff000000);
for($i=0; $i<4; $i++){
$s = '';
$s = ($iIP & $xor[$i]) >> $i*8;
if ($s < 0) $s += 256;
$ips[] = $s;
}
krsort($ips);
return implode('.',$ips);
}
python的ip十进制相互转换
import socket
import struct
#ip转换十进制
socket.ntohl(struct.unpack("I",socket.inet_aton("10.10.58.64"))[0])
#十进制转换ip
socket.inet_ntoa(struct.pack("I", socket.htonl(168442432)))
标签:IPNum,10,socket,function,ip,256,十进制,进制
From: https://blog.51cto.com/u_15973272/6115781