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

标签 python c++ pyzmq

我正在使用一个 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'.*(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

关于python - 如何使用 zmq/zeromq 从传递给 python 的字符串表示(字节数组)中获取整数/ float ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33542786/

相关文章:

python - 如何设计复杂的 Bokeh 应用程序?

python - 如何发送命令并让 Errbot 私下回复我?

ssh - 通过 SSH 使用 ipython notebook 会导致 GLIBC not found 错误

ZeroMQ:多个套接字的相同上下文

python - Numpy 屏蔽操作

python - 导入错误:没有名为 texttract 的模块

c++ - 成员函数的模板特化

c++ - 使用 boost spirit 解析带有可选分隔符的字符串

c++ - 分配给非常量引用

python - 为什么 ZMQ 不会丢弃消息?