Вы можете использовать struct
, используя модификатор 'd' для 'double':
>>> import struct
>>> num1 = '0xb4933333'
>>> num2 = '0x41d26580'
>>> struct.unpack('!d', (num2[2:]+num1[2:]).decode('hex'))[0]
1234567890.3
Будьте внимательны, в каком порядке вы добавляете удвоения, в приведенном выше примере предполагается машина с прямым порядком байтовКроме того, я удалил 0x
, поскольку функция decode
не ожидает этого.
edit: если вы используете Python 3, вам нужно использовать bytes.fromhex
вместо ''.decode('hex')
.
Просто чтобы дать альтернативу (приведенное выше очень хорошее решение):
>>> import struct
>>> num1 = '0xb4933333'
>>> num2 = '0x41d26580'
>>> low_word = int(num1, 16)
>>> high_word = int(num2, 16)
>>> representation = struct.pack('>II', high_word, low_word)
>>> result = struct.unpack('>d', representation)
>>> result[0]
1234567890.3