Программирование > Теория, алгоритмы и стандарты
перевод ip адреса в целое число(int).
commander:
Интересует алгоритм перевода ip адреса в целое число(int) не важно на каком языке...
предложения?
ondr:
--- Код: ---
my $int = ip2UL("192.168.0.1");
print $int, "\\n"; # 3232235521
my $ip = UL2ip($int);
print $ip, "\\n"; # 192.168.0.1
sub UL2ip
{
my $int = shift;
return join(".", unpack("C4", pack("N", $int)));
}
sub ip2UL
{
my ($ip, $bin) = shift;
$bin .= unpack("B8", pack("C", $_)) for split(/\\./, $ip);
# $bin = join("", map {unpack("B8", pack("C", $_))} split(/\\./, $ip));
return unpack("N", pack("B32", $bin));
}
--- Конец кода ---
Функцию ip2UL скорее всего можно оптимизировать, я уже не стал
commander:
ondr
это конечно... да... но хотелось всё же видеть универсальный алгоритм... без привязок к конкретным функциям конкретных языков программирования... :)
commander:
для примера:
192.168.0.1
y [x]
3 [192] 3 [168] 1 [0] 1 [1]
319231681011
где y - разряд числа, x -число...
Yukko:
http://php.spb.ru/php/ip.html
читаем, смотрим, какие арифметические дейсвия выполняются, пишем алгоритм. Там несложно!
Навигация
Перейти к полной версии