questo esempio di codice, spiega (spero in modo esaustivo)
come viene codificato un file di tipo BITMAP a 24 bit.
codice:
#include <stdio.h>
#include <stdlib.h>

int multiplo4(int i)
{
    while(i%4!=0)
        i++;
    return i;
}

int main()
{
    int l, a, rl;
    printf("inserisci la [largezza] in pixel: ");
    scanf("%d", &l);
    printf("inserisci l\' [altezza]  in pixel: ");
    scanf("%d", &a);
    printf("\n%d pixel nella codifica RGB corrispondono\na %d byte (3 byte per pixel, 24 bit)\n", l, l*3);
    printf("\nOgni scan-line deve essere composta da\nuna stringa di byte multipli di 4 (32 bit)\n");
    printf("Qualora la scan-line (larghezza*3) fosse composta da un numero\n");
    printf("complessivo di byte inferiore ad un multiplo di 4\nverranno in automtico aggiunti dei byte nulli fino\n");
    printf("a far raggiungere alla scan-line il piu\' vicino numero multiplo di 4\n");
    rl=l*3;
    printf("In questo caso, ll multiplo di 4 piu\' vicino a %d ", rl);
    rl=multiplo4(rl);
    printf("e\' %d\n", rl);
    printf("quindi, ad ogni scan-line verranno aggiunti automaticamente %d byte\n", rl-(l*3));
    printf("e complessivamente il file conterra\' %d byte nulli in piu\'\n", (rl-(l*3))*a); 
    printf("\nTutte le immagini bitmap24 di dimensioni (in pixel) %dx%d\nsono composte complessivamente da %d byte\n", l, a, (rl*a)+54 );   
    printf("\nI primi 54 byte contengono l\'intestazione del file (header)\nmentre i successivi (in questo caso) %d byte\ncontengono la mappatura RGB dell\'immagine\n\n", rl*a);
    system("pause");
    return 0;
}
altre info in italiano sulle .BMP:
http://www.galileimirandola.it/frattali/nuova_pa6.htm