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

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

我正在使用 C++ 服务器和一些 Python 带有 zmq ( ZeroMQ ) 库的客户端。我想发送 floatinteger 给客户。

我已经通读了 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'.*(M\d+):(\d+)', message)

print ("Command is: ", match.group())
print ("Motor: ", match.group(1))
print ("Target Angle: ", match.group(2))

python的输出:

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

如何将 b'155' 解析为 intfloat

提前致谢!

嗯...

3>> float(b'155')
155.0