[Python]转换问题:浮点数 --> 字节数,反之亦然
[Python]Conversion issue: Float --> Bytes and viceversa
我正在为无法解决的问题而苦苦挣扎。
我正在开发客户端-服务器应用程序,在 python ofc 中,我需要发送一些 "float type" 数据,但 sock.sendto 需要发送一个 "bytes type" 变量。
我试过 struct.pack,我试过 numpy.array(这个让我发送整个数组,在这种情况下似乎是最好的模块)它们都有效,我可以发送我需要的数据 "bytes type"格式。
真正的问题是服务器端,我无法将接收到的数据(以字节为单位)转换为浮点数。
我试过这个:
1) Cast: float(data) ofc 它没有工作
2) "".join 变量,然后使用 float(data) ofc 转换它,这也不起作用
所以我很困惑。任何的想法?我真的需要阅读浮动服务器端。
谢谢
# sender side
data = struct.pack('!d', 3.1415) # float -> bytes
# receiver side
x = struct.unpack('!d', data) # bytes -> float
struct.unpack
returns 解压缩值的元组。使用 x[0]
您将获得第一个(在本例中仅)值,即您想要的浮点数。
编辑: 请注意,python 浮点数实际上是双精度数,因此应该这样包装。
我正在为无法解决的问题而苦苦挣扎。 我正在开发客户端-服务器应用程序,在 python ofc 中,我需要发送一些 "float type" 数据,但 sock.sendto 需要发送一个 "bytes type" 变量。 我试过 struct.pack,我试过 numpy.array(这个让我发送整个数组,在这种情况下似乎是最好的模块)它们都有效,我可以发送我需要的数据 "bytes type"格式。 真正的问题是服务器端,我无法将接收到的数据(以字节为单位)转换为浮点数。 我试过这个: 1) Cast: float(data) ofc 它没有工作 2) "".join 变量,然后使用 float(data) ofc 转换它,这也不起作用
所以我很困惑。任何的想法?我真的需要阅读浮动服务器端。 谢谢
# sender side
data = struct.pack('!d', 3.1415) # float -> bytes
# receiver side
x = struct.unpack('!d', data) # bytes -> float
struct.unpack
returns 解压缩值的元组。使用 x[0]
您将获得第一个(在本例中仅)值,即您想要的浮点数。
编辑: 请注意,python 浮点数实际上是双精度数,因此应该这样包装。