0
我正在使用一個C++服務器和幾個Python客戶端與zmq
(ZeroMQ)庫。我想向客戶發送float
和integer
。如何從字符串表示形式(字節數組)中使用zmq/zeromq獲取整數/浮點數?
我已經通過手動對zmq
讀,但是我有發送任何東西比char array
從C++代碼,這不能由客戶端python
被解釋爲integer
或float
的問題。
我的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'
爲int
或float
?
預先感謝您!
我已經忘了提,我是一個Python跛腳,用它約4小時。 :) 感謝你及時的答覆! –
@ToMmY_hun:那麼我會建議花時間去瀏覽[教程](https://docs.python.org/3/tutorial/index.html),看看你至少已經有一些技能了其他編程語言。 –
是的,我會這樣做,但現在我必須在週五之前完成一個項目。感謝您的幫助! –