2017-08-18 86 views
0

我嘗試將多個十六進制數字加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 

但我的回答得到的是不正確。我的計算錯了嗎?

+0

您的代碼將無法編譯,甚至如果修正顯示了你有什麼顯示不同的輸出。請創建一個[最小,完整和可驗證示例](https://stackoverflow.com/help/mcve)。 – dgw

+0

你想如何打印?請參閱'printf' – zdim

+2

更好:'爲我的$ i(0..499){...}' – zdim

回答

3

打印值時,你應該轉換爲十六進制表示,

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); 
} 
+0

感謝它的工作! – Tim

+0

'printf'而不是'print sprintf'如何? –

+0

當然; OP可能只是想在某處存儲結果。 –

相關問題