我想将基数 10 更改为基数 16 [重复]
Posted
技术标签:
【中文标题】我想将基数 10 更改为基数 16 [重复]【英文标题】:I want to change base 10 number to base 16 [duplicate] 【发布时间】:2017-09-11 16:44:59 【问题描述】:我正在编写一些代码(javascript)来将基数为 10 的数字更改为基数 16。如果余数在 10 到 15 之间,我知道基数 16 有字母。这就是我遇到问题的地方。我不能把余数改成字母。
到目前为止,这是我所拥有的:
var mynum = 4053,remainder=[];
while (mynum > 0)
total = mynum % 16;
remainder.push(total);
mynum = Math.floor(mynum / 16);
switch (total > 9 || total < 16)
case total === 10:
total = "A";
break;
case total === 11:
total = "B";
break;
case total === 12:
total = "C";
break;
case total === 13:
total = "D";
break;
case total === 14:
total = "E";
break;
case total === 15:
total = "F";
break;
console.log(total,remainder)
假设“mynum”= 4053,那么我会得到 5,13,15。但我想得到 5,D,F。我也尝试使用“for”循环但得到了同样的结果。感觉就像我很接近但只是错过了一些东西,有人可以帮助我吗?
mynum 是实际数字,total 是余数,“remainder”是我将余数放在列表中的位置
【问题讨论】:
我给你做了一个你也可以做的 sn-p。hex = 4053..toString(16);
【参考方案1】:
hexString = yourNumber.toString(16);
它将base 10转换为base 16
【讨论】:
【参考方案2】:hexString = yourNumber.toString(16);
是一种更好的方法。但是按照你的代码中的逻辑,这就是你错了。
这个remainder.push(total);
语句应该在switch
之后。在您的代码中,它位于 switch
之前。
mynum = 4053;
remainder = [];
while ( mynum > 0)
total = mynum % 16;
mynum = Math.floor(mynum / 16);
// remainder.push(total);
switch (total > 9 || total < 16)
case total === 10:
total = "A";
break;
case total === 11:
total = "B";
break;
case total === 12:
total = "C";
break;
case total === 13:
total = "D";
break;
case total === 14:
total = "E";
break;
case total === 15:
total = "F";
break;
remainder.push(total); // here
console.log(remainder);
【讨论】:
谢谢。小事大有作为。以上是关于我想将基数 10 更改为基数 16 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
当我将基数为 10 的数字转换为基数为 2 的数字时,为啥位会重复?