Вход на сайт
programm
143
NEW 06.03.07 15:26
#include <stdio.h>
void print_ip_addr(unsigned int ip_addr)
{
unsigned int i1,i2,i3,i4;
i1=ip_addr/(256*256*256);
i2=ip_addr/(256*256)-i1*256;
i3=ip_addr/256-i1*256*256-i2*256;
i4=ip_addr%256;
printf("%i.%i.%i.%i\n",i1,i2,i3,i4);
}
void main(void)
{
int ipnum;
scanf("%i",&ipnum);
print_ip_addr(ipnum);
}
кто может подсказать как ето считать?
если ввести 1
260
65540
16909060
void print_ip_addr(unsigned int ip_addr)
{
unsigned int i1,i2,i3,i4;
i1=ip_addr/(256*256*256);
i2=ip_addr/(256*256)-i1*256;
i3=ip_addr/256-i1*256*256-i2*256;
i4=ip_addr%256;
printf("%i.%i.%i.%i\n",i1,i2,i3,i4);
}
void main(void)
{
int ipnum;
scanf("%i",&ipnum);
print_ip_addr(ipnum);
}
кто может подсказать как ето считать?
если ввести 1
260
65540
16909060
NEW 06.03.07 15:35
в ответ Saia-- 06.03.07 15:26
В чём заключается вопрос-то? Если в пересчёте ip в строку, то - http://linux.about.com/library/cmd/blcmdl3_inet_ntoa.htm
NEW 06.03.07 16:10
в ответ Saia-- 06.03.07 15:39
Это можно было и попроще написать -
Как считать? Представляешь число в двоичном виде, и сдвигаешь его вправо на 24, 16, 8, 0 битов. Берёшь низшие 8 битов.
В ответ на:
void print_ip_addr( unsigned int ip_addr )
{
unsigned char i1, i2, i3, i4;
i1 = ip_addr >> 24;
i2 = ip_addr >> 16;
i3 = ip_addr >> 8;
i4 = ip_addr;
printf( "%i.%i.%i.%i\n", i1, i2, i3, i4 );
}
Как считать? Представляешь число в двоичном виде, и сдвигаешь его вправо на 24, 16, 8, 0 битов. Берёшь низшие 8 битов.