gpt4 book ai didi

Javascript 检查 NaN - 结果不符合预期

转载 作者:行者123 更新时间:2023-11-30 13:12:24 25 4
gpt4 key购买 nike

我有一个通过 ajax 读取数字的应用程序,该数字是十六进制的,我解析它并转换为十进制。

这些数字通过无线串行链路传入,并非 100% 可靠,因此我需要在开始处理数据之前检查它们。例如,数字采用 ****025781610403e5**** 形式。 **** 只是一种检查数字开始和结束的方法,我过去在非基于 Web 的项目中使用过,可以更改。

最后关于我的问题:作为错误检查的一部分,我想我会检查 NaN,因为我在测试时确实遇到了 NaN 错误,但是 *1234 给出了正 NaN 12**34 没有,这是为什么呢?我还能做些什么来测试?

这是我使用过的一些代码,请注意我是 javascript 的新手。

function readSliceConvert()
{
functionReadForm()
testVal = hexString.slice(4,18);
document.getElementById("battDb4").innerHTML=testVal;
testNum1 = h2d(testVal)
document.getElementById("battDb5").innerHTML=testNum1.toString();
testNum2 = parseInt(testVal);
document.getElementById("battDb6").innerHTML=testNum2.toString();
if (isNaN(testNum2))
{
errorCount++;
document.getElementById("battDb3").innerHTML=errorCount.toString();
document.getElementById("battDb4").innerHTML=testVal;

return;
}
}

最佳答案

那是因为你正在使用 parseInt,当字符串开头有一些它可以解析的数字时,它会默默地忽略字符串末尾的字符。

我不知道您的h2d 函数在做什么,但您似乎正在将十六进制字符串转换为数字,然后转换为十进制形式的字符串,然后再转换回数字。我看不出解析十六进制字符串的输出不能是数字的任何原因。

比如像这样,解析失败返回null:

function h2i(str) {
var num = 0;
var digits = "0123456789abcdef";
str = str.toLowerCase();
for (var i = 0; i < str.length; i++) {
var n = digits.indexOf(str.substr(i, 1));
if (n == -1) return null;
num = num * 16 + n;
}
return num;
}

演示:http://jsfiddle.net/Guffa/6yAaP/

用法:

testVal = hexString.slice(4,18);
document.getElementById("battDb4").innerHTML = testVal;
testNum = h2i(testVal)
document.getElementById("battDb5").innerHTML = testNum.toString();
if (testNum == null)
{
errorCount++;
document.getElementById("battDb3").innerHTML = errorCount.toString();
document.getElementById("battDb4").innerHTML = testVal;
return;
}

关于Javascript 检查 NaN - 结果不符合预期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13405804/

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