如何使用zmq/zeromq从传递给python的字符串表示(字节数组)中获取整数/浮点数

How to get integer / float number from a string representation ( array of bytes ) delivered to python using zmq / zeromq?

本文关键字:字节数 数组 字节 浮点数 整数 获取 表示 zeromq zmq 何使用 python      更新时间:2023-10-16

我使用的是一个C++服务器和一些带有zmq(ZeroMQ)库的Python客户端。我想向客户端发送一个float和一个integer

我已经阅读了zmq的手册,但我在从C++代码发送char array以外的任何其他内容时遇到问题,python客户端无法将其解释为integerfloat

我的C++代码如下:

//  Socket to talk to clients
void *context = zmq_ctx_new();
void *responder = zmq_socket(context, ZMQ_REP);
int rc = zmq_bind(responder, "tcp://*:5555");
int msg_cnt = 0;
while (1) {     
    char data[] = "M3:155";
    sendCommand(responder, data);
}
static void sendCommand(void* r, char* cmd) {
    static int n;
    char buffer[10];
    zmq_recv(r, buffer, 10, 0);
    zmq_send(r, cmd, sizeof(cmd), 0);
    std::cout << std::to_string(n++) << ". command sent." << std::endl;
    Sleep(1);
}

python客户端是这样的:

context = zmq.Context()
#  Socket to talk to server
print("Connecting to hello world server")
socket = context.socket(zmq.REQ)
socket.connect("tcp://localhost:5555")
#print("Sending request %s ")
socket.send(b"I am here.")
#  Get the reply.
message = socket.recv()
#message = b"M5:-"
print("Received reply [%s]" % (message))
match = re.match(b'.*(Md+):(d+)', message)
print ("Command is: ", match.group())
print ("Motor: ", match.group(1))
print ("Target Angle: ", match.group(2))

python的输出:

收到回复[b'M3:155x00xcc']
命令为:b'M3:155'
电机:b'M3'
目标角度:b'155'

如何将b'155'解析为intfloat

提前谢谢!

Erm。。。

3>> float(b'155')
155.0