C 收集值并将其存储在单独的变量中 printf(“Dst地址:\n”); 对于(i=0;iip地址)和(0x0FF(i*8));

C 收集值并将其存储在单独的变量中 printf(“Dst地址:\n”); 对于(i=0;iip地址)和(0x0FF(i*8));,c,C,这样,我可以将目标ip地址打印为192.28.2.11,但我只需要前两个数字192和28。如何获得这两个值?仅修改现有代码有什么问题: printf(" Dst Address:\n"); for(i = 0;i < 4;i++) printf(" %d ",((ip->ip_dst.s_addr)&(0x0FF<<(i*8)))>>(i*8)); 它输出: #include <stdio.h> int main (void) {

这样,我可以将目标ip地址打印为192.28.2.11,但我只需要前两个数字192和28。如何获得这两个值?

仅修改现有代码有什么问题:

printf(" Dst Address:\n");
for(i = 0;i < 4;i++)
printf(" %d ",((ip->ip_dst.s_addr)&(0x0FF<<(i*8)))>>(i*8));
它输出:

#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;
}

您可以看到组件被放置在单独的数组元素中。

您想使用它们还是只打印它们?还有,您是如何做了如此复杂的一点旋转,但却不知道如何调整代码,哪怕是稍微调整一点来做些不同的事情?
#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