gpt4 book ai didi

regex - Perl:使用正则表达式将十六进制编码的字符串解析为数组

转载 作者:行者123 更新时间:2023-12-04 16:41:33 24 4
gpt4 key购买 nike

我对 Perl 开发很陌生,我想执行以下任务:

我的脚本接收十六进制编码的字符串作为命令行参数。然后我必须解码这个字符串并将它写入输出文件,就像一个 C++ 数组,从给定的数据初始化。例如:
perl myscript.pl DEADBABEDEADBEEF和输出类似
const boost::array<char, 8> MyArray = { 0xDE, 0xAD, 0xBA, 0xBE, 0xDE, 0xAD, 0xBE, 0xEF };
使用 Perl 正则表达式执行此操作的正确方法是什么?当然,我可以使用子字符串在循环中执行它,但我相信应该有更优雅的方式。

编辑:输入字符串是固定长度的。

最佳答案

尝试这个:

my $hex = "DEADBABEDEADBEEF";
my @a = map "0x$_", $hex =~ /(..)/g;

这个怎么运作:

一、 $hex =~ /(..)/g在列表上下文中捕获所有 2 个字符的子字符串( /g 标志表示全局匹配)。然后 map()获取列表并将其转换为另一个列表,使用 "0x$_"第一个列表中每个元素的表达式( $_ 这里是元素的别名)。

另见 perldoc -f map .

关于regex - Perl:使用正则表达式将十六进制编码的字符串解析为数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3264165/

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