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

Я использую сервер C ++ и несколько клиентов Python с zmq (ZeroMQ) lib. Я хотел бы отправить 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))

Выход для питона:

Получил ответ [b'M3:155\x00\xcc']
Команда это: b'M3:155'
Мотор: b'M3'
Целевой угол: b'155'

Как я могу разобрать b'155' как int или же float?

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

0

Решение

Эмм …

3>> float(b'155')
155.0
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]