十进制整数转成十六进制数
/*
输入:
dec:十进制整数
输出
hex:返回“0x"开头的转换后的字符串
原理:
十进制数通过“&"位操作转换成二进制,然后通过4bit取出为十六进制。
例如:
dec: 40000,二进制是1001110001000000,先转换成“”0x04C9",然后倒序转换成十六进制"0x9C40".
*/
function DectoHex(dec)
{
var C = 0xF; // Check 掩码,和dec相与取出dec的4bit
var A = dec; // Accumulate
var B = -1; // Base string length
var S = ''; // Source 'string'
var hex = '0x'; // 转换后的字符串
do
{
++B; //计算十六进制有几位
A&=C; //每次取目标值的4bit
{
var C = 0xF; // Check 掩码,和dec相与取出dec的4bit
var A = dec; // Accumulate
var B = -1; // Base string length
var S = ''; // Source 'string'
var hex = '0x'; // 转换后的字符串
do
{
++B; //计算十六进制有几位
A&=C; //每次取目标值的4bit
switch(A) //如果十进制数值大于10,需要转成十六进制A,B,C,D,E,F
{
case 0xA:
A='A';
break;
case 0xB:
A='B';
break;
case 0xC:
A='C';
break;
case 0xD:
A='D';
break;
case 0xE:
A='E';
break;
case 0xF:
A='F';
break;
A=(A);
}
S+=A;
{
case 0xA:
A='A';
break;
case 0xB:
A='B';
break;
case 0xC:
A='C';
break;
case 0xD:
A='D';
break;
case 0xE:
A='E';
break;
case 0xF:
A='F';
break;
A=(A);
}
S+=A;
dec>>>=0x04; //十进制数右移4bit,左边移入0,转成新的十六进制数
A=dec;
}while(dec); //如果十进制右移后变成0,表示十进制数已经处理完成
do
{
hex+=S[B]; //将处理完的十六进制按照倒序填入返回的字符串
}while(B--);
A=dec;
}while(dec); //如果十进制右移后变成0,表示十进制数已经处理完成
do
{
hex+=S[B]; //将处理完的十六进制按照倒序填入返回的字符串
}while(B--);
S = B = A = C = dec; // 已经不用的变量都初始化为0.
return hex;
}
return hex;
}