У меня есть переменная, которая содержит 4 байта, адрес IPv4 сетевого порядка (это было создано с использованием пакета и целочисленного представления). У меня есть другая переменная, также 4-байтовый сетевой порядок, подсеть. Я пытаюсь добавить их вместе и добавить один, чтобы получить первый IP-адрес в подсети.Каков самый простой способ добавить один к двоичной строке в Perl?
Чтобы получить представление ASCII, я могу сделать inet_ntoa($ip&$netmask)
, чтобы получить базовый адрес, но это ошибка inet_ntoa((($ip&$netmask)+1)
; Я получаю сообщение, как:
Argument "\n\r&\0" isn't numeric in addition (+) at test.pm line 95.
Итак, что происходит, лучше всего, как я могу сказать, это он смотрит на 4 байта, и, видя, что 4 байта не представляют собой числовую строку, а затем отказывающегося add 1.
Другой способ: я хочу, чтобы это добавило 1 к младшему значащему байту, который я знаю, это 4-й байт? То есть, я хочу взять строку \n\r&\0
и в итоге получить строку \n\r&\1
. Каков самый простой способ сделать это?
Есть ли способ сделать это без необходимости распаковывать и повторно упаковывать переменную?
Я думаю, что вы правы. Просто пытался понять, есть ли более простой способ, но, увы, не может быть. – 2008-10-21 14:44:48