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:
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)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);
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:
Pero esto no parece tener ningún efecto sobre temp, ya que se queda con un valor de 0.double temp; memcpy( &temp, data, 8 );
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.