Конвертировать Hex в UTF-8
Есть строка: '0x0F 0x00 0x39 0x32 0x2E 0x30 0x2E 0x34 0x35 0x31 0x35 0x00' Хочу конвертировать её в читаемый формат. Пытаюсь сделать таким вот образом:
fff = '0x0F 0x00 0x39 0x32 0x2E 0x30 0x2E 0x34 0x35 0x31 0x35 0x00'
bytes_object = bytes.fromhex(fff)
print(bytes_object.decode("UTF-8"))
Получаю трейсбек:
Traceback (most recent call last):
File ".../check.py", line 14, in <module>
bytes_object = bytes.fromhex(fff)
ValueError: non-hexadecimal number found in fromhex() arg at position 1
Есть у кого идеи, что именно я делаю не так и как правильно вытащить из этого хекса необходимые данные? Онлайн конвертер говорит, что должно быть вот такое вот значение там: 92.0.4515
Ответы (2 шт):
Автор решения: CrazyElf
→ Ссылка
Уберите пробелы и 0x из строки сначала:
fff = '0x0F 0x00 0x39 0x32 0x2E 0x30 0x2E 0x34 0x35 0x31 0x35 0x00'
bytes_object = bytes.fromhex(fff.replace(' ', '').replace('0x', ''))
print(bytes_object.decode("UTF-8"))
Но всё-равно там в начале ещё 0F и 00 останутся и в конце 00, они не преобразуются в печатные символы:
�92.0.4515�
Автор решения: A_Vaclav
→ Ссылка
fff = '0x0F 0x00 0x39 0x32 0x2E 0x30 0x2E 0x34 0x35 0x31 0x35 0x00'.split()
print(fff)
bytes_object = [bytes.fromhex(x[2::]) for x in fff]
print(bytes_object)
res = [x.decode("UTF-8") for x in bytes_object]
print(res)
print(''.join(res))
#print(bytes_object.decode("UTF-8"))