例如现场有力传感器,发送以下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)