perl - 在 Perl 中,如何将字符串中的多个十进制数字转换为它们的十六进制等效值?

标签 perl printf

在 Perl 中,如何将文件一行中的多个十进制数转换为它们的十六进制等价物?

我有代码可以转换找到的最后一个数字,但不转换之前的数字,我想转换所有数字,而不仅仅是最后一个找到的数字:

if ($line =~ /[0-9]+/) {
   $loc = index($line,/\s+[0-9]+\s*/);
   $mybyte = substr($line,$loc);
   $newbyte = sprintf("%x\n", $mybyte);
   $newline = substr($line,0,$loc).$newbyte;
   print my_report $newline;
}

最佳答案

$line =~ s/([0-9]+)/sprintf "%X", $1/eg;

关于perl - 在 Perl 中,如何将字符串中的多个十进制数字转换为它们的十六进制等效值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11270489/

相关文章:

perl - Perl 中的 Substr,将 utf8 字符切成两半

arrays - smartmatch 运算符未按预期工作

c - C 中 printf 字符串格式的奇怪行为

c - 在 C 中编写宏时,如何找到参数的类型和 printf 说明符?

regex - 连续替换 CSV 文件中的空值

regex - 使用 Perl 匹配两个重叠模式

r - UNIX 中的预测分析(时间序列模型)

c - 两个文件都以二进制模式打开,无法从其他文件完全复制文件

c - 每行前面有额外的空间

c++ - cout 没有输出但 printf 有