|
|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Antony Gerasimov 2:5010/148.46 07 Aug 2003 10:32:16 To : Yuri Shlyapkin Subject : IP address --------------------------------------------------------------------------------
Пpивет Yuri!
06 Авг 03 07:45, Yuri Shlyapkin -> All:
YS> Hужно перевести IP адрес формата A.B.C.D в обычное число:
YS> IP Number = A x 16777216 + B x 65536 + C x 256 + D
YS> Вопрос: есть ли стандартная функция?
Я не нашёл ;) поэтому сделал так:
=== начался |cat ~/devel/perl/ip2int/ip.pl ===
#!/usr/bin/perl
# convert integer to IP addr
sub int2ip($) {
my $num = shift;
my @ip = ();
$ip[0] = sprintf("%d",($num/256/256/256));
$ip[1] = sprintf("%d",(($num-$ip[0]*256*256*256)/256/256));
$ip[2] = sprintf("%d",(($num-$ip[0]*256*256*256-$ip[1]*256*256)/256));
$ip[3] = $num-$ip[0]*256*256*256-$ip[1]*256*256-$ip[2]*256;
return "$ip[0].$ip[1].$ip[2].$ip[3]";
}
# convert IP addr to integer
sub ip2int($) {
my @a = split /\./, shift;
return ($a[0]*256*256*256+$a[1]*256*256+$a[2]*256+$a[3]);
}
# some: IP addresses
my @my_ip = ( '193.233.86.1', '193.233.80.130' ,
'193.233.80.5', '193.233.86.104',
'127.0.0.1', '192.168.1.27',
'0.0.0.0', '255.255.255.255'
);
foreach (@my_ip) {
print 'conversion: ',$_,' -> ',ip2int($_),' -> ',int2ip (ip2int($_)),"\n";
}
1;
=== закончился |cat ~/devel/perl/ip2int/ip.pl ===
--- GoldED+/BSD 1.1.4.7
* Origin: No one wants to be someone else's control. (2:5010/148.46)
Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/39693f31d8dc.html, оценка из 5, голосов 10
|