The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"аналог функции long2ip"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"аналог функции long2ip"  
Сообщение от DenisK email on 26-Июл-05, 10:32 
На php есть функция long2ip для преобразования десятичного формата IP адреса в 4-х байтный.
Есть ли такая функция на perl?
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

 Оглавление

Сообщения по теме [Сортировка по времени, UBB]


1. "аналог функции long2ip"  
Сообщение от butcher (ok) on 26-Июл-05, 10:42 
>На php есть функция long2ip для преобразования десятичного формата IP адреса в
>4-х байтный.
>Есть ли такая функция на perl?

inet_ntoa

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "аналог функции long2ip"  
Сообщение от DenisK email on 26-Июл-05, 10:57 
>>На php есть функция long2ip для преобразования десятичного формата IP адреса в
>>4-х байтный.
>>Есть ли такая функция на perl?
>
>inet_ntoa

она не пашет
=============
#!/usr/bin/perl
use Socket;
$ip = inet_ntoa (174073896);
print $ip;
================
результат:
Bad arg length for Socket::inet_ntoa, length is 9, should be 4 at ./bill.pl line 3.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "аналог функции long2ip"  
Сообщение от Simps (ok) on 26-Июл-05, 11:04 
>>>На php есть функция long2ip для преобразования десятичного формата IP адреса в
>>>4-х байтный.
>>>Есть ли такая функция на perl?
>>
>>inet_ntoa
>
>она не пашет
>=============
>#!/usr/bin/perl
>use Socket;
>$ip = inet_ntoa (174073896);
>print $ip;
>================
>результат:
>Bad arg length for Socket::inet_ntoa, length is 9, should be 4 at
>./bill.pl line 3.

Все работает ...
#!/usr/bin/perl
use Socket;
$ipl = inet_aton("192.168.0.2");
$ip = inet_ntoa ($ipl);
print "$ip\n";

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

4. "аналог функции long2ip"  
Сообщение от butcher (ok) on 26-Июл-05, 11:07 
>результат:
>Bad arg length for Socket::inet_ntoa, length is 9, should be 4 at
>./bill.pl line 3.

Используйте функцию pack

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

5. "аналог функции long2ip"  
Сообщение от rWizard email(ok) on 26-Июл-05, 11:10 
Для преобразования в числовой формат
(не знаю как его назвать, но его использует mysqld [кстати там есть встроенная возможность преобразования])
встроенных функций нет, но есть:

http://www.opennet.dev/openforum/vsluhforumID9/4179.html#16

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

7. "аналог функции long2ip"  
Сообщение от chip email(ok) on 26-Июл-05, 18:41 
>$ip = inet_ntoa (174073896);

$ip = inet_ntoa(pack("L", 174073896));

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

6. "аналог функции long2ip"  
Сообщение от ihor on 26-Июл-05, 11:25 
sub long2ip {
    my($num) = @_;
    my(@res, $n);
    
    while (scalar(@res) < 4) {
        $n = $num % 1000;
        if ($n < 256) {
            unshift(@res, $n);
            $num = $num / 1000;
        } else {
            unshift(@res, $num % 100);
            $num = $num / 100;
            
        } # if
    } # while
    return \@res;
} # sub
# =============================================
sub printIP {
    my($ip) = @_;
    print(join('.', @{$ip}), "\n");
} # sub
# =============================================
# test
printIP(long2ip(174073896));
printIP(long2ip(0));
printIP(long2ip(211));

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

8. "аналог функции long2ip"  
Сообщение от Виталий email vp7mail.ru email on 23-Янв-07, 16:20 
Всё просто как 5 копеек:

sub ip2long {
    return unpack("N",inet_aton(shift));
}

sub long2ip {
    return inet_ntoa(pack("N",shift));
}

Используется в моих скриптах, проверено на калькуляторе - великолепно работает :)

p.s. используется к примеру так:
print ip2long("213.18.6.5");

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру