Hola personaje,
No soy de la facu pero ví la lista en gmane y me interesó ya que soy
Programador y Porteño :)
Como te dice Sebastián, el cast a float es una muy mala idea.
Por un lado, si SOLO tienes que cargar al imagen en memoria y luego grabarla
en otro lado (sin hacer NADA con ella) entonces no tienes que preocuparte
por el tipo "real" de cada pixel.
En C++ existe un "modelo de memoria" que especifica ciertos requisitos
mínimos que deben cumplir todos los elementos del programa en relación a
cómo se "representan" em la RAM.
En particular, está garantizado que TODOS los objetos, sin importar de qué
tipo sean, tienen lo que se llama un "object representation": una sequencia
de bytes que determinan completamente el objeto en cuestion. Como el tipo
"unsigned char" es el que designa un byte, TODO objeto puede verse como un
"bloque de memoria" por medio de un "unsigned char*":
CIERTO_TIPO objeto ;
unsigned char* storage=&objecto;
Entonces, tu ejemplo sería así:
unsgined char* array[sizeof(CIERTO_TIPO) * cantidad];
for (int i=0;i<100;i++)
{
unsigned char temp;
std::cin>>temp;
array[i] = temp;
}
Y lo mismo para grabarlo.
Como ves, lo único que tienes que saber del tipo de pixel de la imagen es su
sizeof().
Ahora bien, si en verdad si vas a hacer algo con la imagen y entonces
tendrías que usar el tipo correcto, lo que debes hacer es algo así (mas o
menos):
Salu2
unsgined char* array[sizeof(CIERTO_TIPO) * cantidad];
CIERTO_TIPO* real = (CIERTO_TIPO*)array ;
lo llenas como antes, pero "accedes" a los pixeles desde real[idx].
------
Fernando Cacciola
SciSoft
http://certuscode.wordpress.com
http://fcacciola.50webs.com
http://fcacciola.wordpress.com
_______________________________________________
Lista de correo Programacion.
[email protected]
http://listas.fi.uba.ar/mailman/listinfo/programacion