Open nixawk opened 7 years ago
#include <stdio.h> typedef unsigned char u_char; typedef unsigned int u_int; typedef unsigned int bool; void pr_ipaddr(u_int); bool is_little_endian(void); /* check memory endian */ bool is_little_endian(void) { u_int x = 0x11223344; return *(u_char *)&x == 0x44; } /* Translate a integer to a ipaddr string */ void pr_ipaddr(u_int hex) { u_char *ptr = NULL; u_int index = 0; if (0xFFFFFFFF <= hex && hex <= 0x00000000) { printf("pr_ipaddr failed - invalid ip range\n"); } else { ptr = (u_char *)&hex; if (is_little_endian()) { printf("%#x -> %d.%d.%d.%d\n", hex, ptr[3], ptr[2], ptr[1], ptr[0]); } else { printf("%#x -> %d.%d.%d.%d\n", hex, ptr[0], ptr[1], ptr[2], ptr[3]); } } } int main(void) { pr_ipaddr(0xFFFFFFFF); pr_ipaddr(-1); return 0; }