convertir cadena de números hexadecimales a número de doble precisión en Java

¿Cómo podemos convertir una cadena de números hexadecimales a un número de doble precisión en Java?

en matlab es simple:

>> hex2num('c0399999a0000000')

ans =

  -25.6000

pero ¿podría hacer las mismas cosas en Java también?

Probé parseInt() pero este número no es entero.

preguntado el 22 de mayo de 12 a las 20:05

2 Respuestas

Creo que quieres Double.longBitsToDouble, Así:

public class Test {
    public static void main(String[] args) {
        String hex = "c0399999a0000000";
        long longHex = parseUnsignedHex(hex);
        double d = Double.longBitsToDouble(longHex);
        System.out.println(d);
    }

    public static long parseUnsignedHex(String text) {
        if (text.length() == 16) {
            return (parseUnsignedHex(text.substring(0, 1)) << 60)
                    | parseUnsignedHex(text.substring(1));
        }
        return Long.parseLong(text, 16);
    }
}

(El hecho de que long está firmado en Java hace que esto sea más incómodo de lo que realmente querrías, pero oye...)

contestado el 22 de mayo de 12 a las 20:05

¡No funciona! - Intenté hace un momento en mi aplicación de Android. - Daniel Selvan

@Daniel: "No funciona" no nos da ninguna información sobre exactamente lo que estás intentando, o exactamente Qué ocurre. Le sugiero que haga una nueva pregunta que muestre su código en un ejemplo breve pero completo, vinculando a esta pregunta y explicando lo que está viendo frente a lo que espera ver. - jon skeet

Perdón por mi acto inmaduro, aquí está el enlace a mi pregunta como sugirió. stackoverflow.com/q/55295966/10773894 - Daniel Selvan

Primero haz un largo, y luego llama longBitsToDouble

contestado el 22 de mayo de 12 a las 20:05

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.