2009-07-02 14 views
6

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

Por ejemplo, la forma de implementar:

float f = HexStringToFloat ("BF800000"); // f debe contener ahora -1.0

Lo pregunto porque he intentado:

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

Pero tengo la siguiente excepción:

java.lang.NumberFormatException: Para cadena de entrada: "bf800000 "

Respuesta

16
public class Test { 
    public static void main (String[] args) { 

     String myString = "BF800000"; 
     Long i = Long.parseLong(myString, 16); 
     Float f = Float.intBitsToFloat(i.intValue()); 
     System.out.println(f); 
     System.out.println(Integer.toHexString(Float.floatToIntBits(f))); 
    } 
} 
+0

me sale: java.lang.NumberFormatException: Para cadena de entrada: "BF800000" – apalopohapa

+0

Cuando la prueba: Float.intBitsToFloat (Integer.valueOf ("BF800000", 16) .intValue()); Obtengo la excepción: java.lang.NumberFormatException: Para cadena de entrada: "BF800000" – apalopohapa

+0

Está desbordando un int. Cambiar a Long.valueOf (myString, 16) no arroja la excepción, pero da como resultado -1.0 en lugar de 10.0. ¿Estás seguro de que 10.0 es el resultado correcto? –

2

es necesario convertir el valor hexadecimal a un entero (se deja como ejercicio) y luego usar Float.intBitsToFloat(int)

Cuestiones relacionadas