进制间转换的小窍门

来源:互联网 发布:java编程用记事本 编辑:程序博客网 时间:2024/04/28 05:01

当值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 hexfor($i = 0; $i < @ARGV; $i++){        printf("%d\t = 0x%x\n", $ARGV[$i], $ARGV[$i]);}

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

100 = 0x64500 = 0x1f4751 = 0x2ef

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

#!/usr/local/bin/perl#Covert list of decimal numbers into hexfor($i = 0; $i < @ARGV; $i++){        ¥val = hex($ARGV[$i]);        printf("0x%x = %d\n", $val, $val);}
0 0