如何十进制转十六进制?
对于整数部分,用被除数反复除以 16,除第一次外,每次除以16均取前一次商的整数部分作被除数并依次记下每次的余数。另外,所得到的商的最后一位余数是所求二进制数的最高位。
对于小数部分,采用连续乘以基数 16,并依次取出的整数部分,直至结果的小数部分为 0 为止。故该法称“乘基取整法”。
以下将十进制数 7562 转为十六进制:
| 除于 16 |
商 (整数) |
余数 (十进制) |
余数 (十六进制) |
位次 |
| 7562/16 |
472 |
10 |
A |
0 |
| 472/16 |
29 |
8 |
8 |
1 |
| 29/16 |
1 |
13 |
D |
2 |
| 1/16 |
0 |
1 |
1 |
3 |
结果:756210 = 1D8A16
以下图表求十进制数 35631 对应的十六进制数:
| 除于 16 |
商 (整数) |
余数 (十进制) |
余数 (十六进制) |
位次 |
| 35631/16 |
2226 |
15 |
F |
0 |
| 2226/16 |
139 |
2 |
2 |
1 |
| 139/16 |
8 |
11 |
B |
2 |
| 8/16 |
0 |
8 |
8 |
3 |
结果:3563110 = 8B2F16
十进制转十六进制转换表
| 十进制 |
十六进制 |
| 0 |
0 |
| 1 |
1 |
| 2 |
2 |
| 3 |
3 |
| 4 |
4 |
| 5 |
5 |
| 6 |
6 |
| 7 |
7 |
| 8 |
8 |
| 9 |
9 |
| 10 |
A |
| 11 |
B |
| 12 |
C |
| 13 |
D |
| 14 |
E |
| 15 |
F |
| 16 |
10 |
| 17 |
11 |
| 18 |
12 |
| 19 |
13 |
| 20 |
14 |
| 21 |
15 |
| 22 |
16 |
| 23 |
17 |
| 24 |
18 |
| 25 |
19 |
| 26 |
1A |
| 27 |
1B |
| 28 |
1C |
| 29 |
1D |
| 30 |
1E |
| 40 |
28 |
| 50 |
32 |
| 60 |
3C |
| 70 |
46 |
| 80 |
50 |
| 90 |
5A |
| 100 |
64 |
| 200 |
C8 |
| 1000 |
3E8 |
| 2000 |
7D0 |
'
$("#resultDesc2").html(txtCode);
}
function str2num(s)
{
s=s.toString().trim().replace(/(\d)(\s+)(?=\d)/gm,"$1+").replace(/[^-()\d/*+.]/g, '');
var ineg=s.indexOf("-");
var isOp=/[+*\/]/.test(s);
if( !isOp && ineg<1 ) return s;
if( s=='' ) return 0;
return Function('"use strict";return ('+s+')')();
}
function convert() {
var dec = str2num($("#userInput").val());
//var dec = document.calcform.x.value;
try {
var x = new BigNumber(dec, 10);
}
catch(err) {
return;
}
var y = x.toString(16).toUpperCase();
var y5 = x.toString(2);
var y2;
var t1 = new BigNumber("-8000000000000000",16);
var t2 = new BigNumber("7FFFFFFFFFFFFFFF",16);
var t3 = new BigNumber("10000000000000000",16);
if( x.isInteger() && x.gte(-32768) && x.lte(32767) ) {
y2 = new BigNumber(x, 10);
if( x.lessThan(0) ) y2 = x.plus("10000",16);
y2 = pad(y2.toString(16).toUpperCase(), 4);
}
else if( x.isInteger() && x.gte(-2147483648) && x.lte(2147483647) ) {
y2 = new BigNumber(x, 10);
if( x.lessThan(0) ) y2 = x.plus("100000000",16);
y2 = pad(y2.toString(16).toUpperCase(), 8);
}
else if( x.isInteger() && x.gte(t1) && x.lte(t2) ) {
y2 = new BigNumber(x, 10);
if( x.lessThan(0) ) y2 = x.plus(t3);
y2 = pad(y2.toString(16).toUpperCase(), 16);
}
else {
y2 = "N/A";
}
if( true ) {
y = digitgroup(y,4," ");
y2 = digitgroup(y2,4," ");
y5 = digitgroup(y5,8," ");
}
decimal2base(dec,y,16);
// document.getElementById("y").value = y;
// document.getElementById("y2").value = y2;
// document.getElementById("y5").value = y5;
}
function digitgroup(x, n, d)
{
if( x=="N/A" ) return x;
var x0=x.split(".")[0];
var x1=x.split(".")[1];
var y="";
var x0head="";
var re=new RegExp("(.{"+n+"})","g");
if( x0!="" && x0!=undefined ) {
if( x0[0]=="-" ) {
y="-";
x0=x0.substring(1,x0.length);
}
x0head = x0.substring(0,x0.length%n);
y += x0head;
x0 = x0.substring(x0.length%n,x0.length);
//x0 = x0.replace(/(.{4})/g,"$1 ");
x0 = x0.replace(re,"$1 ");
x0 = x0.substring(0,x0.length-1);
if( x0head!="" && x0!="" ) y+=d;
y += x0;
}
if( x1!="" && x1!=undefined ) {
y += ".";
//y += x1.replace(/(.{4})/g,"$1 ");
y += x1.replace(re,"$1 ");
}
return y;
}