Como string hexadecimal convertido para flutuar em Java?
-
21-08-2019 - |
Pergunta
Como converter seqüência hexadecimal de precisão simples de ponto flutuante em Java?
Por exemplo, como implementar:
float f = HexStringToFloat ( "BF800000"); // f agora deve conter -1.0
Pergunto isso porque eu tentei:
float f = (float)(-1.0);
String s = String.format("%08x", Float.floatToRawIntBits(f));
f = Float.intBitsToFloat(Integer.valueOf(s,16).intValue());
Mas eu recebo a seguinte exceção:
java.lang.NumberFormatException: Para string de entrada: "bf800000"
Solução
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)));
}
}
Outras dicas
Você precisa converter o valor hexadecimal para um int (deixado como um exercício) e, em seguida, usar Float.intBitsToFloat(int)
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow