gpt4 book ai didi

perl - 在 Perl 中将数据打印为 hexdump

转载 作者:行者123 更新时间:2023-12-02 04:22:07 25 4
gpt4 key购买 nike

我正在尝试在 Perl 中将数据打印为十六进制转储,但看起来只有当我使用十六进制转储值对变量进行“硬编码”时它才起作用。在下面的代码中,对于第一种情况打印 hexdump,但对于第二种情况($var2),它只打印从文件句柄读取的数据

#!/usr/bin/perl
use Data::Dumper;
$var = "\xE9\x92\x97\xAF\xE9\x92\x97\xB5";
print "the first dumper is\n";
print Dumper($var);
my $filename = 'c.txt';
open($fh, "<", $filename);
{
local $/;
$var2 = <$fh>;
chop($var2);
}
close($fh);
$var5 = $var2;
print "the second dumper is\n";
print Dumper($var5);

上面代码的输出是

[root@abc]# perl code.pl 

第一个倾销者是

$VAR1 = 'é’—¯é’—µ';

第二个倾销者是

$VAR1 = '"\\xE9\\x92\\x97\\xAF\\xE9\\x92\\x97\\xB5"';

看起来 perl 正在为文件句柄输入中存在的每个斜杠附加一个额外的反斜杠。如何将文件句柄数据打印为 hexdump? c.txt文件的内容是

[root@abc]# cat c.txt 
"\xE9\x92\x97\xAF\xE9\x92\x97\xB5"

最佳答案

你可以做到这一点

#!/usr/bin/perl
use Data::Dumper;
$var = "\xE9\x92\x97\xAF\xE9\x92\x97\xB5";
print "the first dumper is\n";
print Dumper($var);
my $filename = 'c.txt';
open($fh, "<", $filename);
{
local $/;
$var2 = <$fh>;
chop($var2);
}
close($fh);
$var5 = $var2;
$var5 =~ s/"|\\x//g;
print "the second dumper is\n";
print Dumper(pack("H*",$var5));

我使用搜索和替换来删除所有的“字符和\x,因为这些只是为了帮助人类可读而使用的。然后将其打包为十六进制字符串。

关于perl - 在 Perl 中将数据打印为 hexdump,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39630589/

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