将十六进制数乘以错误的序列

时间:2017-08-18 07:43:11

标签: perl hex

我尝试将10个十进制数加倍,然后添加到另一个十六进制数,但得到的结果很奇怪。

use strict;
use warnings;

my $address= 0x10000;
for ( $i =0 ; $i<=499 ; $i++ ) {
    my $line = hex($i+1)*10;
    my $new_address = $address + $line;
    print $new_address\n;
}

我想得到的答案应该是每{15} hex($i+1)成为

hex(15) = F * 10 = F0
10000 + F0 = 100F0
hex(16) = 10 * 10 = 100
10000 + 100 = 10100

但我的回答是不正确的。我的计算错了吗?

1 个答案:

答案 0 :(得分:4)

打印值时,您应该转换为十六进制表示,

use strict;
use warnings;

my $address= 0x10000;
for (my $i =0 ; $i<=499 ; $i++ ) {
    # 10 != 0x10
    my $line = ($i+1)*0x10;
    my $new_address = $address + $line;
    # print sprintf("%X\n", $new_address);
    printf("%X\n", $new_address);
}