typedef unsigned int u32_t; typedef unsigned char u8_t; struct in_addr { unsigned int s_addr; }; char * inet_ntoa(struct in_addr addr) { static u8_t str[16]; u32_t s_addr = addr.s_addr; u8_t inv[3]; u8_t *rp; u8_t *ap; u8_t rem; u8_t n; u8_t i; rp = str; ap = (char *) &s_addr; for (n = 0; n < 4; n++) { i = 0; do { rem = *ap % (u8_t) 10; *ap /= (u8_t) 10; inv[i++] = '0' + rem; } while (*ap); while (i--) *rp++ = inv[i]; *rp++ = '.'; ap++; } *--rp = 0; return str; } #define A 0xD01E050A int main(void) { struct in_addr a; a.s_addr = A; printf ("%s\n", inet_ntoa(a)); return 0; }