Rappresentazione di dati come testo e in forma binaria

Consideriamo una variabile di tipo intera x, e assumiamo che sul calcolatore servano quattro byte per rappresentarla, ossia che sizeof(int)=4. Come sono fatti i byte che si trovano in questa zona di memoria? È sufficiente considerare la rappresentazione binaria del numero, e considerare che ogni byte sono otto bit. Per esempio, per rappresentare il numero 943123, passiamo alla sua rappresentazione binaria:

00000000000011100110010000010011 

Dividendo questa sequenza di 32 bit in pezzi di otto bit ciasuno (byte) si ottiene:

00000000 00001110 01100100 00010011 

Il valore di questi byte, scritto in decimale, è:

0 14 100 19 

Cosa succede quando si va a scrivere il numero 943123 su un file di testo? L'istruzione fprintf(fd, "%d", x); scrive su file le cifre decimali del numero, ossia scrive la sequenza di byte che rappresentano i caratteri:

'9' '4' '1' '2' '3'

Stampando il valore numerico di questi byte, per esempio con fprintf("%d", '9'); si ottengono i seguenti valori:

57 52 49 50 51

Infatti, il carattere '9' è rappresentato in codice ASCII da numero 57, ecc.

Cosa si ricava da tutto questo discorso? Lo stesso numero, 943123 viene rappresentato in memoria con quattro byte (come tutti gli interi), i cui valori (0 14 100 19) dipendono dal metodo di rappresentazione in binario. Se si scrive il numero su un file di testo, questo viene rappresentato con la sequenza di byte 57 52 49 50 51, che sono i valori numerici delle varie cifre del numero.

Il C permette di scrivere su un file dei valori esattamente nel modo in cui sono rappresentati in memoria. I file scritti in questo modo si dicono file binari, per contrapporli ai file di testo, in cui i dati vengono scritti usando la loro rappresentazione in forma si sequenza di caratteri.