进制间转换的小窍门

当值x是2的非负整数n次幂时,即就是2^n, 我们很容易将x写成十六进制的形式,只要记住是x的二进制表示就是1后面跟n个0.
十六进制数字0代表4个二进制0.
因此,当n表示成i+4j的形式,其中0<=i<= 3时,我们可以把x写成开头的十六进制数字为1(i=0),2(i=1),4(i=2)或者8(i=3),后面跟着j个十六进制的0。
eg:x=2048=2^11, 有n=11=3+4*2,从而十六进制表示为0x800.
eg:x=131072=2^17,有n=17=1+4*4,从而十六进制表示为0x20000.

接下来谈谈十进制和十六进制间的转换吧
(1)十进制转换成十六进制

#!/usr/local/bin/perl
#Covert list of decimal numbers into hex

for($i = 0; $i < @ARGV; $i++){
        printf("%d\t = 0x%x\n", $ARGV[$i], $ARGV[$i]);
}

一旦这个文件被设置为可执行的,命令
unix> ./d2h 100 500 751
会产生输出:

100 = 0x64
500 = 0x1f4
751 = 0x2ef

(2)十六进制转换成十进制

#!/usr/local/bin/perl
#Covert list of decimal numbers into hex

for($i = 0; $i < @ARGV; $i++){
        ¥val = hex($ARGV[$i]);
        printf("0x%x = %d\n", $val, $val);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值