gpt4 book ai didi

JavaScript:十六进制到十进制转换器错误

转载 作者:行者123 更新时间:2023-11-30 07:54:40 28 4
gpt4 key购买 nike

我一直在制作一个自定义函数,用于将我的 scratch project 中的十六进制转换为十进制:

function Hex2Decimal(hex){
var deci = 0;
var num = 1;
var hexstr = String(hex);
hexstr = hexstr.toLowerCase();
var expon = 0;
for(var i = 0; i < hex.length; i++){
expon = Math.pow(16,hexstr.length - (num+1));
if(hexstr[num+1] === "a"){
deci = (10*expon)+deci;
}else if(hexstr[num-1] === "b"){
deci = (11*expon)+deci;
}else if(hexstr[num-1] === "c"){
deci = (12*expon)+deci;
}else if(hexstr[num-1] === "d"){
deci = (13*expon)+deci;
}else if(hexstr[num-1] === "e"){
deci = (14*expon)+deci;
}else if(hexstr[num-1] === "f"){
deci = (15*expon)+deci;
}else if(hexstr[num-1] != "undefined"){
deci = (Number(hexstr[num-1])*expon)+deci;
}
num = num + 1;
}
return deci;
}

但是当我将“BC324240”放入其中时,它返回值“197338148”而不是“3157410368”。将值转换回十六进制时,我得到“BC32424”。出于某种原因,我需要帮助才能找到其中的“0”完全被“忽略”。还注意到使用“10”返回 1...

最佳答案

以下内置函数将为您进行转换:

dec = parseInt('0x' + hexstr,16);

只需确保要转换的数字小于最大安全 JavaScript 整数:
(2^53 - 1) = 0x1fffffffffffff = 9007199254740991。

如果您需要处理更大的数字,请查看此处的代码: https://codegolf.stackexchange.com/questions/1620/arbitrary-base-conversion
不是我写的,别叫我解释

关于JavaScript:十六进制到十进制转换器错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43196775/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com