我正在尝试使用 JavaScript 将 DEC 数字转换为 HEX。
我要转换的数字是 28。
我试过使用:
function h2d(h) {return parseInt(h,16);}
但是它返回 40
我也尝试过使用:
function d2h(d) {return d.toString(16);}
但是它返回 28
最终结果应该返回 1C 但我似乎无法解决。
有谁知道我哪里出错了?
我正在尝试使用 JavaScript 将 DEC 数字转换为 HEX。
我要转换的数字是 28。
我试过使用:
function h2d(h) {return parseInt(h,16);}
但是它返回 40
我也尝试过使用:
function d2h(d) {return d.toString(16);}
但是它返回 28
最终结果应该返回 1C 但我似乎无法解决。
有谁知道我哪里出错了?
听起来您遇到了麻烦,因为您在查找数字时输入的是字符串。尝试将您的 d2h() 代码更改为如下所示,您应该设置:
function d2h(d) { return (+d).toString(16); }
加号 ( +
) 是强制变量为数字的简写方法。只有 Number 的toString()
方法会采用基数,String 的不会。此外,您的结果将是小写的,因此您可能希望使用以下命令将其强制为大写toUpperCase()
:
function d2h(d) { return (+d).toString(16).toUpperCase(); }
所以结果将是:
d2h("28") //is "1C"
重复的问题
(28).toString(16)
您正在制作的错误是“28”是一个字符串,而不是一个数字。你应该把它当作一个数字。人们通常不应该期望该语言能够在进行转换之前将字符串解析为整数(嗯......我想在javascript中期待另一种方式是合理的)。
所写的 d2h() 应该可以正常工作:
js> var d=28
js> print(d.toString(16))
1c
你是怎么测试的?
此外,40 是 d2h(28) 的预期输出,因为十六进制“28”是十进制 40。
let returnedHex = Number(var_value).toString(16);
也有效