4 バイトのネットワーク順 IPv4 アドレスを含む変数があります (これは pack と整数表現を使用して作成されました)。別の変数があります。これも 4 バイトのネットワーク順序のサブネットです。それらを一緒に追加して、サブネット内の最初の IP を取得するために 1 つ追加しようとしています。
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。それを行う最も簡単な方法は何ですか?
変数をアンパックして再パックせずにこれを行う方法はありますか?