как декодировать следующие байты в Python 3 - PullRequest
0 голосов
/ 24 мая 2018

в Python 3, используется socket.recv() для получения данных с аппаратного обеспечения и получения байтов: b'\x00\x004\x00\x08\x00\x00\x00The Delta Wavelength (nm) is currently set to 0.008.\xfc\xa9\xf1\xd2Mb\x80?'

как декодировать вышеприведенное в str (или unicode), '\x00\x004\x00\x08\x00\x00\x00The Delta Wavelength (nm) is currently set to 0.008.\xfc\xa9\xf1\xd2Mb\x80?'?пробовал 'ascii', 'latin-1', 'utf-8'.Ничего не работает.

в Python 2.7, b'\x00\x004\x00\x08\x00\x00\x00The Delta Wavelength (nm) is currently set to 0.008.\xfc\xa9\xf1\xd2Mb\x80?'.decode('latin-1') работает и получает Unicode u'\x00\x004\x00\x08\x00\x00\x00The Delta Wavelength (nm) is currently set to 0.008.\xfc\xa9\xf1\xd2Mb\x80?'.ascii, utf-8 тоже не работает.

ps Я конвертирую код Python 2.7 в Python 3.6

1 Ответ

0 голосов
/ 24 мая 2018

Ват информация вам нужна?потому что если вам нужна только часть:

The Delta Wavelength (nm) is currently set to 0.008.

Тогда вы можете просто сделать что-то вроде:

data = socket.recv()[8:60].decode("utf-8")

или быстрее с памятью

data = memoryview(socket.recv())[8:60].decode("utf-8")

Япри условии, что вам не нужны метаданные аппаратного обеспечения

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...