javascript - Javascript函数十六进制十进制二进制
问题描述
我正在尝试为十进制到十六进制到二进制转换器编写一个函数。我的代码工作几乎完成,唯一的问题是,它给了我一个 Value 两次。例如,如果我想将 45 转换为十六进制和十进制,答案应该是 --->>!!!! 45 --> 2,D --> 0010,1101
我得到的是:45 --> 2,2,D --> 0010,0010,1101
我对 Javascript 非常陌生,现在尝试解决这个小问题两天。请帮我找出我正在做的错误谢谢。我的代码是::
a = prompt("Hex - Decimal - Binary converter. Please give a number : ");
var z = a;
document.write("Number = ", a);
document.write("<br/>");
arr1 = []; // To save quotient (not really required)
arr2 = []; // To save Remainder (not really required)
arr3 = []; // To save Hex values (required to display the end result)
arr4 = []; // To save Binary values (required to display the end result)
hex = ['0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'];
bin = [ '0000' , '0001' , '0010' , '0011'
, '0100' , '0101' , '0110' , '0111'
, '1000' , '1001' , '1010' , '1011'
, '1100' , '1101' , '1110' , '1111'
];
//var a = 14;
while (a > 15) {
b = a / 16;
c = Math.floor(b);
d = a % 16;
arr2.unshift(d);
arr3.unshift(hex[d]);
arr4.unshift(bin[d]);
if (c > 15) {
arr1.push(c);
} else {
arr1.push(c);
arr2.unshift(c);
arr3.unshift(hex[c]);
arr4.unshift(bin[c]);
}
a = c;
}
if (a < 16) {
arr2.unshift(a);
arr3.unshift(hex[a]);
arr4.unshift(bin[a]);
}
//document.write("");
console.log("Answer = ", arr1, ", ");
//document.write("Answer = ", arr1,", ");
console.log("Answer = ", arr2, ", ");
//document.write("Answer = ", arr2,", ");
console.log("Answer = ", arr3, ", ");
document.write(
"The given number ",
z,
" is in Hexa decimal system : ",
arr3,
" "
);
document.write("<br/>");
console.log("Answer = ", arr4, ", ");
document.write("The given number", z, " is in Binary system : ", arr4, " ");
解决方案
您正在取消循环的最后一部分两次。所以你在你的数组中得到了重复。一旦在这里,在其他:
if (c > 15) {
arr1.push(c);
} else {
arr1.push(c);
arr2.unshift(c);
arr3.unshift(hex[c]);
arr4.unshift(bin[c]);
}
然后在这里:
if (a < 16) {
arr2.unshift(a);
arr3.unshift(hex[a]);
arr4.unshift(bin[a]);
}
我认为您可以删除第二部分。
推荐阅读
- postgresql - 是否可以在 HA 配置中以零停机时间扩展(增加核心)正在运行的 GCP CloudSQL?
- r - 调试函数时会话中止
- jquery - jQuery 不能在带有 Webpacker 的 Rails 6 中工作
- kubernetes - 无法掌舵安装rabbitmq服务器(掌舵2.16.9):命名空间“兔子”被禁止
- python - 在 Anaconda Spyder 环境中运行时没有名为 coremltools 的模块
- angular - 如何清除primeng中的吐司消息?
- apache-kafka - GCP Dataflow 在 python 中是否支持 kafka IO?
- flask - 由于条件,Flash 消息未显示
- javascript - 在 ASP.NET CORE MVC 中使用带有传单地图的 SQL 数据库中的纬度和经度显示标记
- git - Mac ZSH shell “忘记” ssh 密钥