[107159] in North American Network Operators' Group

home help back first fref pref prev next nref lref last post

Re: interger to I P address

daemon@ATHENA.MIT.EDU (Robert Kisteleki)
Wed Aug 27 13:07:28 2008

Date: Wed, 27 Aug 2008 19:07:21 +0200
From: Robert Kisteleki <robert@ripe.net>
To: NANOG list <nanog@nanog.org>
In-Reply-To: <48B5884E.9040703@karnaugh.za.net>
Errors-To: nanog-bounces@nanog.org

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


home help back first fref pref prev next nref lref last post