收集值并将其存储在单独的变量中

时间:2011-01-13 07:36:24

标签: c

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 个答案:

答案 0 :(得分:1)

修改你拥有的代码有什么问题:

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]给你的。


以下代码显示了一种方法。由于x86 little-endian格式,IP地址反转(0x0b0280c0):

#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

您可以看到组件放在各个数组元素中。