LINUX.ORG.RU

Перевод ip в десятичную форму представления.


0

0

Первожу ip в десятичную форму:

Мне это надо для сравнения адресов который выдает ulogd, но у меня адреса в десятичном виде не совпадают с тем, что выдает ulogd. Вот
алгоримт перевода, подскажите нет ли ошибки.

my $in = "192.168.0.1";
my @a = split (/\./,$in);
print (($a[0]<<24)+($a[1]<<16)+($a[2]<<8)+$a[3]);


Идея верная, но есть подозрение, что семантика операций вида $a[0]<<24 совсем не та, как ты предполагаешь

BottleHunter
()

Хммм... я всегда думал, что "192.168.0.1" это и есть адрес в
"десятичном" (dotted decimal) виде. Ну да ладно :-/

Посмотри perldoc Socket, в нем есть функция inet_aton() которая
преобразует из dotted decimal в бинарный вид. Возможно это и есть
то, что тебе надо (хотя черт его знает, в каком там виде адреса у
ulogd).

HTH

Onanim
()
Ответ на: комментарий от Onanim

Не, наверное фигню я сморозил про Socket::net_aton(), не поможет
она тебе... у тебя же адреса небось в каком-то читабельном виде.
Дай какой-то пример, как должен выглядеть скажем 192.168.0.1 ?

Onanim
()
Ответ на: комментарий от Onanim

Да, ты немного сморозил глупость, впрочем как и я, спасибо за отклики, переводил правильно, а вот ulogd настрjил не верно.

tmp
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.