[Avanti]  [Indietro]  [Su]  

14.4.2 Le funzioni per il riordinamento

Il problema connesso all'endianess è che quando si passano dei dati da un tipo di architettura all'altra i dati vengono interpretati in maniera diversa, e ad esempio nel caso dell'intero a 16 bit ci si ritroverà con i due byte in cui è suddiviso scambiati di posto. Per questo motivo si usano delle funzioni di conversione che servono a tener conto automaticamente della possibile differenza fra l'ordinamento usato sul computer e quello che viene usato nelle trasmissione sulla rete; queste funzioni sono htonl, htons, ntohl e ntohs ed i rispettivi prototipi sono:

Tutte le funzioni restituiscono il valore convertito, e non prevedono errori.

I nomi sono assegnati usando la lettera n come mnemonico per indicare l'ordinamento usato sulla rete (da network order) e la lettera h come mnemonico per l'ordinamento usato sulla macchina locale (da host order), mentre le lettere s e l stanno ad indicare i tipi di dato (long o short, riportati anche dai prototipi).

Usando queste funzioni si ha la conversione automatica: nel caso in cui la macchina che si sta usando abbia una architettura big endian queste funzioni sono definite come macro che non fanno nulla. Per questo motivo vanno sempre utilizzate, anche quando potrebbero non essere necessarie, in modo da assicurare la portabilità del codice su tutte le architetture.


[Avanti]  [Indietro]  [Su]  
© 2000-2003 Simone Piccardi
Pubblicazione web curata da Mirko Maischberger