Как получить целое число/число с плавающей запятой из строкового представления (массива байтов), доставленного в python с помощью zmq/zeromq?

Я использую сервер C++ и несколько клиентов Python с библиотекой zmq ( ZeroMQ ). Я хочу отправить клиентам float и integer.

Я прочитал руководство для 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?

Заранее спасибо!


person ToMmY_hun    schedule 05.11.2015    source источник


Ответы (1)


Эм...

3>> float(b'155')
155.0
person Ignacio Vazquez-Abrams    schedule 05.11.2015
comment
Я забыл упомянуть, что я хромой Python, используя его около 4 часов. :) Спасибо за быстрый ответ! - person ToMmY_hun; 05.11.2015
comment
@ToMmY_hun: Тогда я бы порекомендовал потратить время на изучение урока, учитывая, что у вас уже есть навыки хотя бы в одном другом языке программирования. - person Ignacio Vazquez-Abrams; 05.11.2015
comment
Да, я сделаю это, но теперь я должен закончить проект до пятницы. Спасибо за помощь! - person ToMmY_hun; 05.11.2015