我猜这是原始(未编码)数据,每一行都由两个以小端顺序存储的 16 位整数组成。这意味着
temperature = (float)(b[3] << 8 + b[2]) / 10;
其中b[2]是第三个字节,b[3]是第四个字节。
因此,使用上述公式,数据将产生以下温度:
81 00 8c 00; #Measurement 0x0081 - 14.0
82 00 aa 00; #Measurement 0x0082 - 17.0
83 00 04 01; #Measurement 0x0083 - 26.0
84 00 ff 00; #Measurement 0x0084 - 25.5
85 00 21 04; #Measurement 0x0085 - 105.7
更新:
这是一个 Python 片段,它在给定带有空格分隔的十六进制值的字符串的情况下进行转换:
input = "81 00 8c 00"
byte_arr = input.split(" ")
for i in range(len(byte_arr)):
byte_arr[i] = int(byte_arr[i], 16)
measurement_id = byte_arr[1] << 8 | byte_arr[0]
temperature = (byte_arr[3] << 8 | byte_arr[2]) / 10.0
print("Measurement: %d" % measurement_id)
print("Temperature: %.2f C°" % temperature)