Forum Webscript.Ru
Программирование => Perl => Тема начата: GunJah от 30 Мая 2005, 16:29:05
-
Заранее сорри если ответ на вопрос из разряда rtfm, я отнюдь не ленивый...
Задача следующая, нужно IP адрес х.х.х.х перевести в бинарик на каждое число ограниченное точкой по одному байту... Ту бишь из Ай-Пишника заданного строкой нужно сделать 4-байтный бинарик...
Расколотил Ай-Пишник split-ом на 4 части и возился с функциями pack и unpack, но че-то не получается...
Мож не так че делаю...
И вообще как из string-а правильно сделать binary ?
Заранее спасибо :rolleyes:
Да и еще вопросик на другую тему (сорри за оффтоп), мож есть у кого пример скрипта на Перлосе аплоада файла на вэб ?
-
по первому: поиск по форуму по слову "long"
по второму: бегом читать faq. он тут прилеплен в форуме
-
1. Нашел только IP to Int, а мне надо IP в бинар, ту бишь 4 байта - 32 бита 0 или 1. И все это на перлосе, а не на php.
2. Читал. Я по-этому и спросил, что уже порылся в скриптах и обе ссылки там на аплоад дохлые :(
http://www.webscript.ru/scripts/Perl/Raznoe/
http://www.webscript.ru/cgi-bin/jump.cgi?ID=359
http://www.webscript.ru/scripts/Perl/Upravlenie/
http://www.webscript.ru/cgi-bin/jump.cgi?ID=86
-
perldoc Net::IP ?
-
Дико извиняюсь, прочел внимательнее FAQ и конечно нашел аплоад, еще раз куча извинений :)
2 NeoNox
Большое спасибо, помогло, хороший модуль...
И все же, если не затруднит, не мог бы кто-нить дать пример, как обычную текстовую строку перевести в бинар (0 и 1) и обратно с помощью pack unpack...
-
Вот способ, правда без pack и unpack, а просто циклом:
sub ip2dec {
my $dec = 0; my $ip = $_[0]; my @s = split(/\\./, $ip);
for (my $i=3; $i>=0; $i--) {$dec += 256**(3-$i) * $s[$i]}
return $dec;
}
sub dec2ip {
my $ip = \'\'; my $dec = $_[0]; my $s;
for (my $i=3; $i>=0; $i--) {$s = int($dec / 256**$i); $ip .= $s.\'.\'; $dec -= $s * 256**$i}
$ip =~ s/\\.+$//g;
return ($ip);
}