, поэтому я знаю, что есть библиотеки, которые могут это сделать для меня, но я хочу изучить пакет/распаковать.Понимание пакета/unpack perl
Моя цель У меня есть пользовательский адрес IP-адрес/маску подсети, а затем убедитесь, что он действителен.
В одну сторону я думал о том, что это было «sprintf» и получить двоичное значение let say 192.168.1.1. это одобренное решение, но тогда мне нужно добавить требуемое количество 0's t сделать его «8 бит»
Это похоже на много ненужной работы, когда pack
может помещать вещи в двоичный формат. Я использовал шаблон N
, который нашел http://perldoc.perl.org/functions/pack.html. Мой первый гол состоял в том, чтобы получить ip-адрес, преобразовать его в двоичный, а затем преобразовать обратно.
$ip = "192.168.1.1";
$bi = pack ("N*", $ip);
print unpack("N*",$bi),"\n";
и выход я получил, был 192
так очевидно, я не понимаю, что здесь происходит.
что именно здесь происходит?
Всегда используйте 'использовать строгий; использовать предупреждения qw (все); '! («Аргумент» 192.168.1.1 «не является числовым в пакете») – ikegami