struct in_addr a;
unsigned w;
a.S_un.S_addr = inet_addr("1.2.3.4"/* a.b.c.d */);
w = a.S_un.S_un_b.s_b1; /* swap b1 and b4 */
a.S_un.S_un_b.s_b1 = a.S_un.S_un_b.s_b4;
a.S_un.S_un_b.s_b4 = w;
w = a.S_un.S_un_b.s_b2; /* swap b2 and b3 */
a.S_un.S_un_b.s_b2= a.S_un.S_un_b.s_b3;
a.S_un.S_un_b.s_b3= w;
/* Now you have inverted addr via a.S_addr */