#python #ieee-754
#python #ieee-754
Вопрос:
использование Python 2.7.3: как преобразовать шестнадцатеричную строку в распакованный номер формата IEEE 754:-
У меня есть строка шестнадцатеричных данных в этой форме:
data = '38 1A A3 44'
Я хотел бы преобразовать это в число с плавающей запятой, используя struct.unpack:
fdata = struct.unpack('<f','x38xA1xA3x44') # fdata=1304.8193359375
Есть ли решение Pythonic или мне нужно как-то заменить escape-последовательность для каждого пробела в данных?
Ответ №1:
Сначала преобразуйте шестнадцатеричные кодовые точки в байтовую строку; binascii.unhexlify()
может сделать это за вас, при условии, что вы удалите пробелы:
import binascii
import struct
fdata = struct.unpack('<f', binascii.unhexlify(data.replace(' ', '')))[0]
ДЕМОНСТРАЦИЯ:
>>> import binascii
>>> import struct
>>> data = '38 1A A3 44'
>>> struct.unpack('<f', binascii.unhexlify(data.replace(' ', '')))
(1304.8193359375,)
Комментарии:
1. Я придумал альтернативный способ преобразования из шестнадцатеричного:
''.join(chr(int(x, 16)) for x in data.split())
. Ваш лучше.