|
function dec2string ($decimal, $base)
{
global $error;
$string = null;
$base = (int)$base;
if ($base < 2 || $base > 36 || $base == 10) {
echo ‘BASE must be in the range 2-9 or 11-36′;
exit;
}
$charset = ’0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ’;
$charset = substr($charset, 0, $base);
if (!ereg(‘(^[0-9]{1,16}$)’, trim($decimal))) {
$error['dec_input'] = ‘Value must be a positive integer’;
return false;
}
do {
$remainder = bcmod($decimal, $base);
$char = substr($charset, $remainder, 1); // get CHAR from array
$string = “$char$string”; // prepend to output
$decimal = bcdiv(bcsub($decimal, $remainder), $base);
} while ($decimal > 0);
return $string;
}
function string2dec ($string, $base)
{
global $error;
$decimal = 0;
$base = (int)$base;
if ($base < 2 || $base > 36 || $base == 10) {
echo ‘BASE must be in the range 2-9 or 11-36′;
exit;
}
$charset = ’0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ’;
$charset = substr($charset, 0, $base);
$string = trim($string);
if (empty($string)) {
$error[] = ‘Input string is empty’;
return false;
}
do {
$char = substr($string, 0, 1); // extract leading character
$string = substr($string, 1); // drop leading character
$pos = strpos($charset, $char); // get offset in $charset
if ($pos === false) {
$error[] = “Illegal character ($char) in INPUT string”;
return false;
}
$decimal = bcadd(bcmul($decimal, $base), $pos);
} while($string <> null);
return $decimal;
}
function pad( $str, $num )
{
return str_repeat( “0″, $num – strlen( $str ) ).$str;
}
// main
if( isset( $_GET["submit"] ) )
{
$ip = 0;
if( isset( $_GET["int"] ) && $_GET["int"] != “” )
{
$ip = $_GET["int"];
}
else if( isset( $_GET["dot"] ) && $_GET["dot"] != “” )
{
$ip = ip2long( $_GET["dot"] );
}
else
{
$ip = 0;
}
$uns_ip = ( $ip > 0 ? $ip : 0xffffffff + $ip + 1 ) + 0;
if( ( $uns_ip & 0×80000000 ) == 0 )
{
$mask = 0xff000000;
}
else if( ( $uns_ip & 0xC0000000 ) == -2147483648 )
{
$mask = 0xffff0000;
}
else if( ( $uns_ip & 0xE0000000 ) == -1073741824 )
{
$mask = 0xffffff00;
}
else
{
$mask = “”;
}
$dot_ip = long2ip( $uns_ip );
$hex_ip = dec2string( $uns_ip, 16 );
$hex_ip = “0x”.pad( $hex_ip, 8 );
$oct_ip = dec2string( $uns_ip, 8 );
$oct_ip = “0″.pad( $oct_ip, 16 );
$bin_ip = dec2string( $uns_ip, 2 );
$bin_ip = pad( $bin_ip, 32 );
?>
Conversion result
| Dot notation |
=$dot_ip?> |
| Decimal number |
=$ip?> |
| Unsigned decimal number |
=$uns_ip?> |
| Hexadecimal number |
=$hex_ip?> |
| Binary number |
=$bin_ip?> |
| Octal number |
=$oct_ip?> |
| Natural netmask |
echo "$mask (".long2ip($mask).") " ?> |
} ?>
|
|