【发布时间】:2010-09-18 08:00:27
【问题描述】:
我有一个变量,它包含一个 4 字节的网络顺序 IPv4 地址(这是使用包和整数表示创建的)。我有另一个变量,也是一个 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 结尾。最简单的方法是什么?
有没有办法做到这一点,而不必解包和重新打包变量?
【问题讨论】: