我在节点js中有一个十六进制值数组,其中包含十六进制值:[' 2ea',' 1b1' ...]。该数组没有固定数量的值。每次都可以更改值的数量。我一直试图想出一个可以添加十六进制值的for循环。但它不起作用。请帮忙。以下代码不正确。
for (var i=0; i<checkSumArray.length; i++) {
function CheckSumFinal(c1, c2) {
var hexStr = (parseInt(c1, 16) + parseInt(c2, 16)).toString(16);
return hexStr;
}
var n7= CheckSumFinal(checkSumArray[i], checkSumArray[i+1]);
}
答案 0 :(得分:3)
计算数组reduce
的总和是完美的。我们的想法是首先计算总和,然后将最终答案转换为base16字符串。
checkSumArray.reduce(function(p, c){
return p + parseInt(c, 16);
}, 0).toString(16);
答案 1 :(得分:2)
将变量保留在循环之外,只需在循环中加入
var checkSumArray = ['2ea','1b1', 'fff', '4a1', '1e1'],
hexStr = 0;
for (var i=0; i<checkSumArray.length; i++) {
hexStr += parseInt(checkSumArray[i], 16);
}
hexStr = hexStr.toString(16);
document.body.innerHTML = '<pre>' + hexStr + '</pre>'
&#13;