interger to I P address
Robert Kisteleki
robert at ripe.net
Wed Aug 27 17:07:21 UTC 2008
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
More information about the NANOG
mailing list