Что не так просто изменить код, который у вас есть:
int a[4];
for (i = 0; i < 4; i++)
a[i] = ((ip->ip_dst.s_addr)&(0x0FF<<(i*8)))>>(i*8);
Это должно дать их вам в a[0]
и a[1]
.
Следующий код показывает один из способов сделать это. Обратный IP-адрес (0x0b0280c0
) из-за формата с прямым порядком байтов x86:
#include <stdio.h>
int main (void) {
int i;
unsigned int addr = 0x0b0280c0;
int a[4];
for (i = 0; i < 4; i++)
a[i] = ((addr)&(0x0FF<<(i*8)))>>(i*8);
printf ("%d %d %d %d\n", a[0], a[1], a[2], a[3]);
return 0;
}
Выводит:
192 128 2 11
и вы можете видеть, что компоненты размещены в отдельных элементах массива.