Cómo convertir binario de 32 bits a flotar

Quiero realizar la conversión de IEEE 754 desde un binario de 32 bits a flotar en python.

He intentado esto

import struct f = int('11000001101011000111101011100001', 2) print struct.unpack('f', struct.pack('i', f))[0] 

pero esto no funciona para números con bit de signo negativo.

La salida esperada debería ser así:

 bintofloat(11000001101011000111101011100001) >>> -21.56 

Podrías usar struct siguiente manera:

 import struct f = int('01000001101011000111101011100001', 2) print struct.unpack('f', struct.pack('I', f))[0] f = int('11000001101011000111101011100001', 2) print struct.unpack('f', struct.pack('I', f))[0] 

Dándole una salida de:

 21.5599994659 -21.5599994659 

Sin embargo, todo depende de cómo se representa el entero.