Ver Mensaje Individual
  #1 (permalink)  
Antiguo 05/08/2008, 09:00
clinisbut
 
Fecha de Ingreso: diciembre-2004
Mensajes: 278
Antigüedad: 19 años, 5 meses
Puntos: 0
convertir array de char a double

Tengo almacenado dentro de un unsigned char array de longitud 8 un double.
Ejemplo:
array[0] = 0x80;
array[1] = 0;
array[2] = 0;
array[3] = 0;
array[4] = 0;
array[5] = 0;
array[6] = 0xC0;
array[7] = 0x50;

Estoy intentando extraer estos valores e insertarlos dentro de una variable de tipo double, pero de una u otra forma obtengo resultados incorrectos:

Primero probé esto (siendo data el unsigned char array del que hablo):
Código:
	double temp;

	temp = (*data)<<(8*7);
	temp+= (*(data+1))<<(8*6);
	temp+= (*(data+2))<<(8*5);
	temp+= (*(data+3))<<(8*4);
	temp+= (*(data+4))<<(8*3);
	temp+= (*(data+5))<<(8*2);
	temp+= (*(data+6))<<8;
	temp+= *(data+7);
Esto me lanza warnings advirtiendome que el desplazamiento de bits provoca un overflow sobre *data (cierto, pues se trata de un simple char:8 bits)
Además el valor es incorrecto.

Otra cosa que intento, pues he visto hacer en otro código que tengo a mano es lo siguiente:
Código:
double temp;
memcpy( &temp, data, 8 );
Pero esto no parece tener ningún efecto sobre temp, ya que se queda con un valor de 0.

Alguna idea?
Noten que no quiero pasar una representación textual del valor double a binario, sino juntar varios valores binarios y obtener el valor double correspondiente.