Foros del Web » Programando para Internet » PHP »

Pasar de exadecimal a flotante...

Estas en el tema de Pasar de exadecimal a flotante... en el foro de PHP en Foros del Web. Tengo una duda Enorme... quiero pasar de hexadecimal a numero flotante... esto estaria bien ???? $valor = '45726D1C'; $pac = unpack('f',$valor); print_r($pac); Alguna otra idea ...
  #1 (permalink)  
Antiguo 07/09/2010, 10:06
(Desactivado)
 
Fecha de Ingreso: enero-2008
Ubicación: Mendoza
Mensajes: 458
Antigüedad: 16 años, 2 meses
Puntos: 2
Pasar de exadecimal a flotante...

Tengo una duda Enorme... quiero pasar de hexadecimal a numero flotante... esto estaria bien ????

$valor = '45726D1C';
$pac = unpack('f',$valor);
print_r($pac);

Alguna otra idea de como hacerlo ???
  #2 (permalink)  
Antiguo 07/09/2010, 10:39
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: Pasar de exadecimal a flotante...

Mira este tema http://stackoverflow.com/questions/1...ith-php-hexdec
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #3 (permalink)  
Antiguo 07/09/2010, 10:53
(Desactivado)
 
Fecha de Ingreso: enero-2008
Ubicación: Mendoza
Mensajes: 458
Antigüedad: 16 años, 2 meses
Puntos: 2
Respuesta: Pasar de exadecimal a flotante...

Vi la respuesta, de ese hilo, pero esa funcion es casi lo mismo que hacer

$valor = '45726D1C';
$pac = hexdec ($valor);

echo $pac;

El tema es que devuelve un entero y no un numero de coma flotante... o sea, lo que yo necesito es convertir por ejemplo:

4571A7F5 a 3866.497

Este valor en en entero devuelve: 1165076469

Se me esta complicando...

Alguna idea ????
  #4 (permalink)  
Antiguo 07/09/2010, 11:15
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: Pasar de exadecimal a flotante...

No sé si esto te ayude, http://bytes.com/topic/php/answers/9...oint#post38346
¿Podrías detallar mejor porque deseas convertirlo a flotante y no a decimal?
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #5 (permalink)  
Antiguo 07/09/2010, 11:52
(Desactivado)
 
Fecha de Ingreso: enero-2008
Ubicación: Mendoza
Mensajes: 458
Antigüedad: 16 años, 2 meses
Puntos: 2
Respuesta: Pasar de exadecimal a flotante...

Estoy leyendo datos de un archivo txt.. eso datos son guardados por un PLC.. y guarda valores en ASCII..

Yo convierto estos valores ASCII a hexadecimal... y de hexadecimal lo tengo que pasar a coma flotante..

por ejemplo: el ASCII: "F$00†î'
Es en hexadecimal: "460086EE"
En numero con signo: +1174439662
y En coma Flotante: 8225.732

Lo que necesito es llevar de hexadecimal o de ese numero entero a coma flotante... y no lo logro... no me dan los resultados como corresponde, estos resultados los saco del mismo programa del PLC que me muestra esos valores.
  #6 (permalink)  
Antiguo 07/09/2010, 12:26
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: Pasar de exadecimal a flotante...

De esta forma lo pude lograr
Código PHP:
Ver original
  1. <?php
  2. $s = '460086EE';
  3. var_dump(unpack('f', pack('i', hexdec($s))));

Edito:
Estaba verificando y el pack('i', .....) forma el mismo ASCII pero al revés.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos

Última edición por abimaelrc; 07/09/2010 a las 12:33
  #7 (permalink)  
Antiguo 07/09/2010, 12:48
(Desactivado)
 
Fecha de Ingreso: enero-2008
Ubicación: Mendoza
Mensajes: 458
Antigüedad: 16 años, 2 meses
Puntos: 2
Respuesta: Pasar de exadecimal a flotante...

Expectacular.... muchisimas gracias... funciono perfecto... thanksss
  #8 (permalink)  
Antiguo 07/09/2010, 12:53
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: Pasar de exadecimal a flotante...

Pero me da curiosidad, ¿para qué es útil pasar de hexadecimal o lo que desees leer a flotante? ¿Qué es lo que quieres lograr con esto?
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #9 (permalink)  
Antiguo 07/09/2010, 13:17
(Desactivado)
 
Fecha de Ingreso: enero-2008
Ubicación: Mendoza
Mensajes: 458
Antigüedad: 16 años, 2 meses
Puntos: 2
Respuesta: Pasar de exadecimal a flotante...

Lo de hexadecimal lo hago por que no me interpretaba una cadena de texto como ASCII.. un tema tonto pero que no lo entendi muy bien....

El tema es que tengo un txt con una cadena como la siguiente:

F™Y L/segMontecs QEo€/ L/segSet Point QB8% Norte QEÄ L/seg Sur QD´û

Lo que hago es separar la cadena y dejar en variables los valores ASCII

$r = 'F™Y';
$r2 = 'QEo€/';
$r3 = 'F™Y';
$r4 = 'F™Y';
$r5 = 'F™Y';

y a estos llevarlos a flotante, pero como no me daba resultado, tube que pasarlos a hexadecimal para que me de como resultado el valor flotante...

Es importante el valor en coma flotante para la interpretacion de graficas que estoy construyendo...

El tema ahora es tratar de llevar la cadena de texto a cada valor en coma flotante....
  #10 (permalink)  
Antiguo 07/09/2010, 13:32
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: Pasar de exadecimal a flotante...

En tu caso como lograste convertir de ASCII a hexadecimal. ¿Usaste unpack o chr con ord y dechex?
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos

Última edición por abimaelrc; 07/09/2010 a las 13:37

Etiquetas: flotante, pasar
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:21.