Hola, necesito crear una rutina en VB6 que convierta una cadena hexadecimal con formato de coma flotante de precisión simple conocida como IEEE754 a un valor decimal.
Por favor, si alguien sabe cuál es la formula para crear las líneas de código que realicen tal acción y me lo puede indicar, se lo voy a agradecer muchísimo.
De antemano muchas gracias.
Saludos.
Hasta donde he podido saber el IEEE754 no se representa como cadena Hexadecimal...
http://en.wikipedia.org/wiki/IEEE_754-2008#Basic_formats
Por ejemplo el -118,625 es 1 10000101 11011010100000000000000
MOD:
Es esto lo que buscas?
http://babbage.cs.qc.edu/IEEE-754/32bit.html
Cita de: Karcrack en 18 Noviembre 2010, 17:04 PM
MOD:
Es esto lo que buscas?
http://babbage.cs.qc.edu/IEEE-754/32bit.html
Así es, es exactamente eso, de hecho, he estado usando el convertidor de ese sitio web para obtener resultados que me permitan seguir avanzando en el programita que estoy creando, pero ya ha llegado el momento de programar ese procedimiento para integrarlo definitivamente y es ahí donde estoy detenido. Cualquier ayuda la agradeceré mucho.
Saludos.
El codigo javascript que utiliza parece bastante complejo...
Mas tarde si puedo intento hacer una funcion...
Un saludo ;)
Despues de googlear he encontrado una forma hardcodeada de hacerlo:
Private Function IEEE754toDouble(ByVal lNum As Long) As Double
' http://stackoverflow.com/questions/1597709
IEEE754toDouble = (lNum And &HFFFFFF) * (1 / (2 ^ 23)) * (2 ^ ((((lNum And &HFF800000) \ &H800000) And &HFF) - 127))
End Function
He probado con algunos valores y funciona :)
Muchas gracias Karcrack, estoy tratando de desentrañar la función, pero no entiendo como aplicarlo, donde y en que formato va el hexadecimal a ingresar y como retorna el resultado.
Gracias de nuevo.
Saludos.
Cita de: Impersecuto en 18 Noviembre 2010, 20:24 PM
Muchas gracias Karcrack, estoy tratando de desentrañar la función, pero no entiendo como aplicarlo, donde y en que formato va el hexadecimal a ingresar y como retorna el resultado.
Gracias de nuevo.
Saludos.
Si no tienes ni idea de VB tal vez deberias utilizar otro lenguaje para esto... ya que, bueno, VB no es muy bueno que digamos para trabajar con numeros...
La cosa seria asi:
MsgBox IEEE754toDouble(&HABCEDF)