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"

Foi útil?

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
scroll top