我必须生成一个包含许多十六进制值的文本文件。十六进制值采用算术级式,差值为0x1000000。
文件中的输出应为:
sum(0x08000000, "text")
sum(0x09000000, "some other text")
sum(0x0A000000, "yet another text")
...
sum(0x10000000, "random something")
...
有什么方法可以运行循环来生成这些值吗?
感谢。
答案 0 :(得分:1)
您需要printf
或sprintf
才能输出十六进制。
Perl"了解"十六进制就好了,如果你把0x
粘在它前面,那就是十六进制。
但是对于输出格式,它会默认为' normal'数字表示 - 所以你需要printf
或sprintf
(他们做同样的事情,但后者'打印到字符串)。
#!/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 );
}