例如现场有力传感器,发送以下16进制数据后,得到如下返回数据,其中18后开始的每4个字节为一个浮点数(高字节在前,低字节在后)
读浮点数格式的测量值:
发送: 01 03 04 00 00 0c 44 77
返回: 01 03 18 46 23 A3 14 C6 23 B7 14 00 00 00 00 00 00 00 00 00 00 00 0 00 00 00
00 5B 70
可以使用以下代码进行4字节与浮点数的转换
function Byte2Float(d, SmallEndian)
-- d为四个字节的数组
out = d[1]
out = (out << 8) | d[2]
out = (out << 8) | d[3]
out = (out << 8) | d[4]
if BigEndian == nil then
out = string.pack("<I4", out)
else
out = string.pack(">I4", out)
end
out = string.unpack("f", out)
return out
end
a = {0x46, 0x23, 0xA3, 0x14}
-- a对应的结果为10472.76953125
print("转换后结果")
print(Byte2Float(a))
--如果低字节在前,使用Byte2Float(a,True)