PHP IP地址和十进制数字互转

 IPV4 可以看做4个256进制的数字, 可以按常规的进制转换换算成十进制.

如 192.168.1.1 换算成10进制:

192*256*256*256 + 168*256*256+1*256+1

 

其实计算机更擅长移位和与或运算. 可以改进算法如下.

 

IP 转长整型

public ipToInt($sIP) { $aIP = explode('.',$sIP); $iIP = ($aIP[0] << 24) | ($aIP[1] << 16) | ($aIP[2] << 8) | $aIP[3] if($iIP < 0) $iIP += 4294967296; return $iIP; }

 

 

整型转 IP:

function intToIP($iIP) { $xor = array(0x000000ff,0x0000ff00,0x00ff0000,0xff000000); for($i=0; $i<4; $i++) { ${s.$i} = ($iIP & $xor[$i]) >> $i*8; if (${s.$i} < 0) ${s.$i} += 256; } return $s3.'.'.$s2.'.'.$s1.'.'.$s0; }

你可能感兴趣的:(PHP,算法,function)