Grazie mille! Non mi ricordavo la funzione memcpy (sono anni che non programmo più)! Ora funziona tutto.Originariamente inviato da MacApp
Attenzione che gli int potrebbero essere (normalmente lo sono) a 4 byte NON a 2, verifica con sizeof.
Se vuoi degli int a 2 byte allora usa degli short.
Per copiare essenzialmente converti l'indirizzo del primo carattere in un puntatore a int e quindi lo valorizzi.
Ad esempio:
Codice PHP:
/*
* 25 april 2008 (i am working)
*
* Compiled and tested by MacApp with:
* i686-apple-darwin8-gcc-4.0.1 (GCC) 4.0.1 (Apple Computer, Inc. build 5367)
*
* output:
* aInt1: 1234;
* aInt2: 1234;
*
*/
#include <stdio.h>
#include <string.h>
int main (void){
const int aIntSource = 1234;
const char * aArray = (const char *) &aIntSource;
const int aInt1 = *((const int *) &aArray [0]);
int aInt2;
memcpy (&aInt2, aArray, sizeof (aInt2));
printf ("aInt1: %d;\n", aInt1);
printf ("aInt2: %d;\n", aInt2);
return 0;
}
Effettivamente gli interi sono a 4 byte, e a me serve che lo siano... mi ero spiegato male prima.
A andbin dico che proprio leggendo quel documento vedo che non c'è una regola fissa sui campi dell'header di un file bmp. Può ad esempio mancare la sezione HeaderCoreInfo, o il campo riguardante la palette dei colori. Per cui mi conviene credo fare come sto facendo. Copio tutto senza preoccuparmi di cosa ci sia dentro...
Grazie a tutti!
Ciao!