¿Cómo convertir una cadena hexadecimal a flotar en Java?

¿Cómo convertir una cadena hexadecimal a un punto flotante de precisión simple en Java?

Por ejemplo, cómo implementar:

float f = HexStringToFloat ("BF800000"); // f debería contener ahora -1.0

Te lo pido porque lo he intentado:

float f = (float)(-1.0);
String s = String.format("%08x", Float.floatToRawIntBits(f));
f = Float.intBitsToFloat(Integer.valueOf(s,16).intValue());

Pero me sale la siguiente excepción:

java.lang.NumberFormatException: para la cadena de entrada: "bf800000"

Respuestas a la pregunta(2)

Su respuesta a la pregunta