0

我有一个脚本,它以十六进制形式对 IPV4 和 IPV6 地址进行大量计算

例如“70.02.03.04”将是

$ipv4="\x46\x02\x03\x04"

这个二进制句柄在我的脚本中是硬编码的。但现在我想动态生成这个

我使用 "sprintf("x%02x", $value) 作为十六进制值,但我将如何生成上面的二进制句柄?

4

1 回答 1

2

您不需要十六进制(数字的字符串表示形式)。

my $hex = '46020304';

您希望该数字为四字节机器整数。

my $uint32 = "\x46\x02\x03\x04";

您可以使用

my $packed = pack('C4', split /\./, '70.02.03.04');

use Socket qw( inet_aton );
my $packed = inet_aton('70.02.03.04');
于 2013-02-13T00:25:47.467 回答