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