У меня есть переменная, которая содержит 4-байтовый IPv4-адрес сетевого порядка (он был создан с использованием pack и целочисленного представления). У меня есть другая переменная, также 4-байтовый сетевой порядок, подсеть. Я пытаюсь сложить их вместе и добавить один, чтобы получить первый IP-адрес в подсети.
Чтобы получить представление 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 байта не представляют числовую строку, а затем отказывается добавлять 1.
Другой способ выразить это: что я хочу сделать, это добавить 1 к младшему байту, который, как я знаю, является 4-м байтом? То есть я хочу взять строку \n\r&\0
и в итоге получить строку \n\r&\1
. Какой самый простой способ сделать это?
Есть ли способ сделать это без необходимости распаковывать и переупаковывать переменную?