我正在尝试将存储为整数列表的数字转换为浮点类型。我通过串行控制台获得了该号码,并希望将其重新组装回一个浮动装置中。我在C语言中的处理方式如下所示:
bit_data = ((int16_t)byte_array[0] << 8) | byte_array[1];
result = (float)bit_data;
我试图在python中使用的是一个更简单的转换:
result = int_list[0]*256.0 + int_list[1]
但是,这不会像C代码那样保留结果的符号。在python中执行此操作的正确方法是什么?
更新: Python版本是2.7.3。我的字节数组的长度为2。在python代码中,byte_array是整数列表。我已将其重命名以避免误解。我不能只使用float()函数,因为它不会保留数字的符号。
我对您拥有的数据以及如何在Python中表示感到困惑。据我了解,您已经通过串行连接收到了两个无符号字节,现在由两个python int的列表表示。该数据表示一个大端16位有符号整数,您要提取该整数并将其转换为浮点数。例如。[0xFF, 0xFE]
-> -2
->-2.0
import array, struct
two_unsigned_bytes = [255, 254] # represented by ints
byte_array = array.array("B", two_unsigned_bytes)
# change above to "b" if the ints represent signed bytes ie. in range -128 to 127
signed_16_bit_int, = struct.unpack(">h", byte_array)
float_result = float(signed_16_bit_int)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句