Convertire un numero intero (unsigned int) in indirizzo ipv4 in C

Come da titolo avevo la necessità di convertire un unsigned int nella classica forma degli indirizzi IP formata da 4 triplette di numeri separate da punto, tipo: 192.168.0.1

Ho trovato questo codice molto semplice ed efficace:

unsigned int    ipAddress = 3232235521;
unsigned char octet[4] = {0, 0, 0, 0};

for (int i = 0; i < 4; i++) {
 octet[i] = ( ipAddress >> ( i * 8 ) ) & 0xFF;
}

printf("%d.%d.%d.%d\n", octet[3], octet[2], octet[1], octet[0]);

Autore: BuDuS

Disegnatore Meccanico, con la passione per l'Informatica. Come hobby, produco piccoli software di (in)utilità.