![]() | Internet-verkossa tietokoneiden osoitteet, ns. IP-osoitteet, ovat 32 bittisiä kokonaislukuja. |
Osoitteet esitetään "selkokielellä" yleensä neljänä 10-järjestelmän
lukuna, jotka erotetaan toisistaan pisteillä.
Esimerkiksi heksajärjestelmän luku 0x0201FF05 esitetään muodossa 2.1.255.5.
Kukin neljästä tavusta esitetään tässä erikseen 10-järjestelmän lukuna, jotka
erotetaan toisistaan pisteillä.
Kirjoitetaan ohjelma, joka tulostaa sille heksamuodossa syötetyn Internet-osoitteen selväkielisessä muodossa:
#include <stdio.h> typedef union { unsigned long long_form; unsigned char octet[4]; }Ip_address_t ; void main (void) { Ip_address_t ip_address; printf ("\nAnna Internet-osoite heksalukuna: "); scanf ("%lx",&ip_address.long_form); printf ("\nIP-osoite: %d.%d.%d.%d", ip_address.octet[3], ip_address.octet[2], ip_address.octet[1], ip_address.octet[0]); }
Union-rakenteelle on annettu typedef-määrittelyllä nimi Ip_address_t. Siinä määritellään IP-osoitteen kaksi erilaista esitysmuotoa, joista toista käytetään ohjelman syöttövaiheessa ja toista tulostuksessa.
Osoite otetaan vastaan %lx-määreellä (long hex). Koska oktetit on määritelty etumerkittöminä kokonaislukuina (arvoalue on 0 - 255), ne voidaan tulostaa %d-määreellä.