摘自 phpBB 的 IP 编码和解码函数

常见的 IP 地址是由 3 个 "." 分隔的 4 组数字共 15 位字符组成,用 phpBB 的编码函数可以将其转换为 8 位字符,长度缩短了近 50%,经过这样转换后,在比较和查询时,性能必定有很大程度的优化。在显示的时候,可以很方便的通过解码函数,将其还原成常见的 IP 格式。

 
<?php
// 说明:摘自 phpBB 的 IP 编码和解码函数
// 整理:http://www.CodeBit.cn

function encode_ip($dotquad_ip)
{
	$ip_sep = explode('.', $dotquad_ip);
	return sprintf('%02x%02x%02x%02x', $ip_sep[0], $ip_sep[1], $ip_sep[2], $ip_sep[3]);
}

function decode_ip($int_ip)
{
	$hexipbang = explode('.', chunk_split($int_ip, 2, '.'));
	return hexdec($hexipbang[0]). '.' . hexdec($hexipbang[1]) . '.' . hexdec($hexipbang[2]) . '.' . hexdec($hexipbang[3]);
}

$ip = encode_ip( '163.56.123.25' );
echo $ip . "<br />";
echo decode_ip($ip) . "<br />";

?>