我有这个字符串03.00.20.80.0F.00.00.68.98.01。最后两个字节98.01.有关于温度的信息。我需要创建JavaScript函数,将最后两个字节从十六进制数0198转换为19和8。这个数字我想从十六进制数字转换为十进制和总和在一起。所以它给了我25.8。它必须是可变的任何数字,因为我可以从我的传感器接收其他字符串,如03.00.20.80.0F.00.00.54.09.02。
我尝试了这个函数,但它返回值为0.1
function splitAndConvertHex(hexString) {
const bytes = hexString.split('.');
const lastTwoBytes = bytes.slice(-2).join('');
const hexValue = '0x' + lastTwoBytes;
const intValue = parseInt(hexValue) >> 8;
const floatValue = (parseInt(hexValue) & 0xFF) / 10;
return [intValue, floatValue];
}
const hexString = "03.00.20.80.0F.00.00.68.98.01.";
const [wholeNumber, decimalNumber] = splitAndConvertHex(hexString);
const result = wholeNumber + decimalNumber;
console.log("Výsledek: " + result);
2条答案
按热度按时间hivapdat1#
不确定从
98.01
获取25.8
背后的逻辑,但这会产生正确的值:6ioyuze22#
从你的问题中我理解到,我认为代码应该是这样的:
我不确定这将回答你的问题,但你可以尝试,如果你有任何问题或意见,让我知道