gpt4 book ai didi

regex - 珀尔 : Regular Expression with changing decimal to hexadecimal

转载 作者:行者123 更新时间:2023-12-04 00:54:08 24 4
gpt4 key购买 nike

我有一个文件,其中许多十进制数以如下形式给出

Hello
Hey
'37888' =>'A'
'37890' =>'B'
'37642' =>'C'

现在我试过了,

while (my $line = <$Log1>) {
$line =~ s/'(\d+)'/(\hex(\d+))/g); #Here I am getting error
print $line;
};
sub hex{
my $num = @_;
my $n= ("0x"."%x\n", $num);
return $n;
};

我认为 (\hex(\d+)) 会起作用。有什么建议吗?

最佳答案

您可以使用 sprintf将十进制数格式化为十六进制并使用 s///e 计算 sprintf:

use warnings;
use strict;

while (my $line = <DATA>) {
$line =~ s/(\d+)/sprintf '0x%x', $1/eg;
print $line;
}

__DATA__
Hello
Hey
'37888' =>'A'
'37890' =>'B'
'37642' =>'C'

输出:

Hello
Hey
'0x9400' =>'A'
'0x9402' =>'B'
'0x930a' =>'C'

此外,已经有一个内置的 hex函数,这意味着您应该避免创建自己的名为 hex 的函数。

关于regex - 珀尔 : Regular Expression with changing decimal to hexadecimal,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64032327/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com