在循环中添加十六进制值

时间:2017-03-20 06:37:01

标签: perl hex

我必须生成一个包含许多十六进制值的文本文件。十六进制值采用算术级式,差值为0x1000000。

文件中的输出应为:

sum(0x08000000, "text")
sum(0x09000000, "some other text")
sum(0x0A000000, "yet another text")
...
sum(0x10000000, "random something")
...

有什么方法可以运行循环来生成这些值吗?

感谢。

1 个答案:

答案 0 :(得分:1)

您需要printfsprintf才能输出十六进制。

Perl"了解"十六进制就好了,如果你把0x粘在它前面,那就是十六进制。

但是对于输出格式,它会默认为' normal'数字表示 - 所以你需要printfsprintf(他们做同样的事情,但后者'打印到字符串)。

 #!/usr/bin/env perl

use strict;
use warnings;

print 0x10,"\n";

my $value = 0x20;
$value += 0x1F;

print $value,"\n";

printf ("%X\n", $value);

格式字符串对于大写十六进制是%X,或者是%x以使用小写。

所以对你的例子来说:

for ( my $i = 0x8000000; $i <= 0x10000000; $i += 0x1000000 ) {
   printf( "sum 0x%x\n", $i );
}