[英]Exchange fixed float array between C++ and python through socket
我正在尝试使用C ++发送固定长度的float数组并使用python来获取它
这是我的C ++客户端,其中sConnect是一个SOCKET对象
float news[2];
news[0] = 1.2;
news[1] = 2.56;
char const * p = reinterpret_cast<char const *>(news);
std::string s(p, p + sizeof news);
send(sConnect, &s[0], sizeof(news), 0);
在python服务器上,我的代码就像
import socketserver
class MyTCPHandler(socketserver.BaseRequestHandler):
def handle(self):
self.data = self.request.recv(8).strip()
print (self.data)
if __name__ == "__main__":
HOST, PORT = "127.0.0.1", 9999
print("listening")
server = socketserver.TCPServer((HOST, PORT), MyTCPHandler)
server.serve_forever()
我在python处获得的数据就像
b'\\ x9a \\ x99 \\ x99?\\ n \\ xd7#@'
如何将此恢复为我发送的原始浮动数据? 还是有更好的发送和接收数据的方法?
您可以使用struct模块解压缩字节数据。
import struct
news = struct.unpack('ff', b'\x9a\x99\x99?\n\xd7#@')
print(news)
使用您的代码:
import struct
import socketserver
class MyTCPHandler(socketserver.BaseRequestHandler):
def handle(self):
self.data = self.request.recv(8).strip()
news = struct.unpack('ff', self.data)
print(news)
struct.unpack的第一个参数'ff'是指定数据预期布局的格式字符串,在这种情况下为2 float。 有关其他格式字符,请参见https://docs.python.org/3/library/struct.html 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.