gpt4 book ai didi

perl - 在 Perl 中将 1 添加到二进制字符串的最简单方法是什么?

转载 作者:行者123 更新时间:2023-12-04 09:34:08 24 4
gpt4 key购买 nike

我有一个变量,它包含一个 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 结束.最简单的方法是什么?

有没有办法做到这一点而不必解压并重新打包变量?

最佳答案

发生的事情是你用 $ip&$netmask 创建了一个字节串。 ,然后尝试将其视为数字。这样是行不通的。你要喂什么给inet_ntoa是。

pack("N", unpack("N", $ip&$netmask) + 1)

我认为没有更简单的方法可以做到这一点。

关于perl - 在 Perl 中将 1 添加到二进制字符串的最简单方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/222043/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com