North American Network Operators Group

Date Prev | Date Next | Date Index | Thread Index | Author Index | Historical

Re: interger to I P address

  • From: Owen DeLong
  • Date: Wed Aug 27 15:39:07 2008

OK... I'll bite...

The pedantic way:

No.  IP addresses are already integers.  All conversation
on this topic has been about how to convert between
different methods of representing integers, but, at the
end of the day, IP addresses are either 32 (IPv4) or
128 (IPv6) bit integers. There is no conversion possible
or required between IP addresses and integers as the
set of {IP Addresses} is a true subset of the set {integers}.

Owen

On Aug 27, 2008, at 10:07 AM, Robert Kisteleki wrote:

Colin Alston wrote:
On 2008/08/27 05:22 PM Dave Israel wrote:

Normally, I don't participate in this sort of thing, but I'm a sucker for a "there's more than one way to do it" challenge.
Aww come on, C gets way more "fun" than that ;)
#define _u8 unsigned char
#define _u32 unsigned long
int main(void) {
   _u32 ipn = 1089055123;
   _u8 ipa[3];
   _u8 oct = 0;
   for (oct=0; oct <4; oct++){
       ipa[oct] = (char)(
           (ipn & (0xFF000000 >> (8*oct))) >> (8*(3-oct))
       );
   }
   printf("%d.%d.%d.%d\n", ipa[0], ipa[1], ipa[2], ipa[3]);
   return 0;
}

Actually, who needs loops for that?


#include <stdio.h>

int main()
{
	unsigned i = 1089055123;
	printf("%d.%d.%d.%d\n",
(unsigned char)(((char*)&i)[3]),
(unsigned char)(((char*)&i)[2]),
(unsigned char)(((char*)&i)[1]),
(unsigned char)(((char*)&i)[0])
);
	return 0;
}


Robert