0

我从我的设备中读取了一些原始数据。该数据也包含 IP 地址,但格式不同。如您所知,IP 地址通常以 abcd 格式写入,但是我有设备提供的 abcd 格式的数据。我需要以 abcd 格式获取它 我如何在 perl 脚本中执行此操作?

问候

4

3 回答 3

0

首先,让我们将十六进制字符串拆分为两个字符的子字符串:

... split /..\K/, "c0a80001";

hex我们将每个片段视为十六进制字符串,并使用内置函数获取数值:

... map hex, ...

然后,我们用句点连接所有数字:

join '.', ...

结合:

my $ip = join '.', map hex, split /..\K/, "c0a80001";
print "$ip\n";

输出:192.168.0.1。这是 IPv4 地址的常用文本表示。

于 2013-07-22T22:01:03.290 回答
0

有很多方法。这将插入带有子字符串的点。

地图 { substr($string,$_,0)='.' } (6,4,2);

也许你更喜欢正则表达式。

$string =~ s/[0-9a-f]{2}\K(?!\Z)/./g;

于 2013-07-22T21:57:03.277 回答
-1

这实际上取决于所采用的方法,但大多数情况下,您需要使用反斜杠转义 IP 地址中的点

a\.b\.c\.d

顺便说一句,一些源代码很好......

于 2013-07-22T21:24:58.110 回答