2015-11-05 54 views
0

我正在使用一個C++服務器和幾個Python客戶端與zmq(ZeroMQ)庫。我想向客戶發送floatinteger如何從字符串表示形式(字節數組)中使用zmq/zeromq獲取整數/浮點數?

我已經通過手動對zmq讀,但是我有發送任何東西比char array從C++代碼,這不能由客戶端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

預先感謝您!

回答

1

呃......

3>> float(b'155') 
155.0 
+0

我已經忘了提,我是一個Python跛腳,用它約4小時。 :) 感謝你及時的答覆! –

+0

@ToMmY_hun:那麼我會建議花時間去瀏覽[教程](https://docs.python.org/3/tutorial/index.html),看看你至少已經有一些技能了其他編程語言。 –

+0

是的,我會這樣做,但現在我必須在週五之前完成一個項目。感謝您的幫助! –

相關問題