我正在尝试将非常大的十六进制数转换为十进制数,但没有成功。我的问题是,当我尝试转换 14 位以上的十六进制数时,使用 deciaml = parseInt(hex, 16) 会给我错误的数字。
我在 Java 中对此没有问题,但 Javascript 在 14 位十六进制数字以上似乎并不准确。
我试过“BigNumber”,但它给了我同样的错误结果。
我已尽我最大的能力在网上搜索并找到可以进行转换但无法弄清楚如何进行转换的网站。
我试过依次获取每个字符并将其乘以它的因子,即 123456789abcdef 15 * Math.pow(16, 0) + 14 * Math.pow(16, 1)…. 等等,但我认为(作为菜鸟)我的子程序可能不尽如人意,因为我得到了一个完全(我的意思是完全不同!)的答案。
如果它对你们有帮助,我可以发布到目前为止我写的内容供你们查看,但我希望有人能为我提供简单的答案。
<script>
function Hex2decimal(hex){
var stringLength = hex.length;
var characterPosition = stringLength;
var character;
var hexChars = new Array();
hexChars[0] = "0";
hexChars[1] = "1";
hexChars[2] = "2";
hexChars[3] = "3";
hexChars[4] = "4";
hexChars[5] = "5";
hexChars[6] = "6";
hexChars[7] = "7";
hexChars[8] = "8";
hexChars[9] = "9";
hexChars[10] = "a";
hexChars[11] = "b";
hexChars[12] = "c";
hexChars[13] = "d";
hexChars[14] = "e";
hexChars[15] = "f";
var index = 0;
var hexChar;
var result;
// document.writeln(hex);
while (characterPosition >= 0)
{
// document.writeln(characterPosition);
character = hex.charAt(characterPosition);
while (index < hexChars.length)
{
// document.writeln(index);
document.writeln("String Character = " + character);
hexChar = hexChars[index];
document.writeln("Hex Character = " + hexChar);
if (hexChar == character)
{
result = hexChar;
document.writeln(result);
}
index++
}
// document.write(character);
characterPosition--;
}
return result;
}
</script>
谢谢你。
保罗
原文由 PAUL WHITE 发布,翻译遵循 CC BY-SA 4.0 许可协议
好的,让我们试试这个:
测试:
印刷
这是正确的(随时验证)。