我从我的设备中读取了一些原始数据。该数据也包含 IP 地址,但格式不同。如您所知,IP 地址通常以 abcd 格式写入,但是我有设备提供的 abcd 格式的数据。我需要以 abcd 格式获取它 我如何在 perl 脚本中执行此操作?
问候
我从我的设备中读取了一些原始数据。该数据也包含 IP 地址,但格式不同。如您所知,IP 地址通常以 abcd 格式写入,但是我有设备提供的 abcd 格式的数据。我需要以 abcd 格式获取它 我如何在 perl 脚本中执行此操作?
问候
首先,让我们将十六进制字符串拆分为两个字符的子字符串:
... split /..\K/, "c0a80001";
hex
我们将每个片段视为十六进制字符串,并使用内置函数获取数值:
... map hex, ...
然后,我们用句点连接所有数字:
join '.', ...
结合:
my $ip = join '.', map hex, split /..\K/, "c0a80001";
print "$ip\n";
输出:192.168.0.1
。这是 IPv4 地址的常用文本表示。
有很多方法。这将插入带有子字符串的点。
地图 { substr($string,$_,0)='.' } (6,4,2);
也许你更喜欢正则表达式。
$string =~ s/[0-9a-f]{2}\K(?!\Z)/./g;
这实际上取决于所采用的方法,但大多数情况下,您需要使用反斜杠转义 IP 地址中的点
a\.b\.c\.d
顺便说一句,一些源代码很好......