the*_*saf 1 javascript hex decimal
我一直在做一个自定义函数,用于从我的临时项目中将十六进制转换为十进制:
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;
}
Run Code Online (Sandbox Code Playgroud)
但是当我在其中输入“ BC324240”时,它将返回值“ 197338148”而不是“ 3157410368”。将值转换回十六进制时,得到“ BC32424”。由于某种原因,我需要帮助发现,其中的“ 0”被完全“忽略”。还注意到使用'10'返回1 ...
小智 5
以下内置函数将为您完成转换:
dec = parseInt('0x' + hexstr,16);
Run Code Online (Sandbox Code Playgroud)
只要确保要转换的数字小于最大安全JavaScript整数即可:
(2 ^ 53-1)= 0x1fffffffffffff = 9007199254740991。
如果您需要处理更大的数字,请在此处查看代码:https :
//codegolf.stackexchange.com/questions/1620/arbitrary-base-conversion
我没有写,所以请不要解释
| 归档时间: |
|
| 查看次数: |
902 次 |
| 最近记录: |