собрать значение и сохранить его в отдельной переменной - PullRequest
0 голосов
/ 13 января 2011
printf(" Dst Address:\n");
for(i = 0;i < 4;i++)
printf(" %d ",((ip->ip_dst.s_addr)&(0x0FF<<(i*8)))>>(i*8));

этим я могу напечатать IP-адрес назначения как 192.28.2.11, но я просто хочу получить первые два числа 192 и 28, как я могу получить эти два значения .?

1 Ответ

1 голос
/ 13 января 2011

Что не так просто изменить код, который у вас есть:

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

и вы можете видеть, что компоненты размещены в отдельных элементах массива.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...