Foros del Web » Programación para mayores de 30 ;) » C/C++ »

almacenar un double en un array de unsigned char

Estas en el tema de almacenar un double en un array de unsigned char en el foro de C/C++ en Foros del Web. Hola, necesito almacenar dos o más números de tipo double en un array de tipo unsigned char y después hacer la operación inversa para obtener ...
  #1 (permalink)  
Antiguo 07/01/2009, 12:50
 
Fecha de Ingreso: enero-2009
Mensajes: 3
Antigüedad: 15 años, 8 meses
Puntos: 0
Pregunta almacenar un double en un array de unsigned char

Hola, necesito almacenar dos o más números de tipo double en un array de tipo unsigned char y después hacer la operación inversa para obtener los valores de tipo double. ¿Alguna idea?
  #2 (permalink)  
Antiguo 07/01/2009, 18:36
Avatar de m4xp0wer  
Fecha de Ingreso: septiembre-2007
Mensajes: 66
Antigüedad: 17 años
Puntos: 1
Respuesta: almacenar un double en un array de unsigned char

En primer lugar, creo que el tamaño del double cambia según el compilador, pero creo que en la mayoría de los casos son 8 bytes.
Por lo tanto, el array de char debería tener (8*numero_de_double) bytes.

si tienes
Código:
double var1;
double var2;
char *matriz;
Para copiarlos, utiliza simplemente un memcpy

Código:
memcpy(matriz,&var1,sizeof(double));
memcpy(matriz+sizeof(double),&var2,sizeof(double));
Si utilizas C++, a lo mejor tienes que hacer algún cast por el medio (matriz es de tipo puntero a char, y sizeof(double) devolvería un entero)
  #3 (permalink)  
Antiguo 08/01/2009, 04:53
 
Fecha de Ingreso: enero-2009
Mensajes: 3
Antigüedad: 15 años, 8 meses
Puntos: 0
Pregunta Respuesta: almacenar un double en un array de unsigned char

Pero: ¿el array de
Código:
char *
es lo mismo que el array de
Código:
unsigned char
? porque estoy haciendo una aplicación de tiempo real y no quiero utilizar cadenas de texto. Gracias por la ayuda.
  #4 (permalink)  
Antiguo 09/01/2009, 11:16
 
Fecha de Ingreso: enero-2009
Mensajes: 2
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: almacenar un double en un array de unsigned char

Hola,

El tamaño de double no debe ser tomado como constante, lo mejor es utilizar sizeof para saber el tamaño del tipo de datos.
Por otro lado si te intereza un array de unsigned char deberías declararlo como tal

Te dejo este programa como referencia. Lee un double y despues lo copia a un array de unsigned char y lo imprime como double (ojo con los cast).

int main(void)
{
unsigned char array[sizeof (double)], *ptr;
double numero;
int i;

scanf("%lf",&numero);

/* guarda la dirección de numero en ptr */
ptr = (char *) №

for( i = 0 ; i < sizeof(double) ; ++i )
{
array[i] = ptr[i];
}

printf("%lf", * ((double *) ptr) );

return(0);
}

Saludos
  #5 (permalink)  
Antiguo 10/01/2009, 08:05
 
Fecha de Ingreso: enero-2009
Mensajes: 3
Antigüedad: 15 años, 8 meses
Puntos: 0
De acuerdo Respuesta: almacenar un double en un array de unsigned char

Gracias por la ayuda, era lo que necesitaba.
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 19:02.