【发布时间】:2021-03-06 20:41:45
【问题描述】:
我有一个正在阅读的文本文件,每一行都有一个十六进制值,我想将它存储在一个变量中。
例如 - 假设一行的格式为“mytext 1c”,那么我想将“1c”存储在一个变量中,然后执行一些涉及十六进制值的计算。
如何使用 Perl 做到这一点?
【问题讨论】:
我有一个正在阅读的文本文件,每一行都有一个十六进制值,我想将它存储在一个变量中。
例如 - 假设一行的格式为“mytext 1c”,那么我想将“1c”存储在一个变量中,然后执行一些涉及十六进制值的计算。
如何使用 Perl 做到这一点?
【问题讨论】:
要在空白处分割一行,您可以使用split ' '。
my @fields = split(' ', $line); # In $fields[1]
或
my $hex = ( split(' ', $line) )[1];
【讨论】:
根据您的示例,有一个键 + 空格 + 十六进制值:
my $line = "mytext 1c";
my ($key, $value) = split /\s+/, $line; # Regexpr to handle 1 or more whitespaces
现在,如果要进行算术运算,请使用hex function 将$value 转换为数字:
my $sum = hex($value) + 1;
printf "%x\n", $sum; # <- prints: 1d
【讨论】: