2011-01-13 58 views
0
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

你想使用它們還是隻打印它們?另外,你怎麼做了這麼複雜的事情,但不知道如何調整代碼,甚至做一些不同的事情? – 2011-01-13 07:52:02

回答

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]


以下代碼顯示了一種方法。的IP地址被反轉(0x0b0280c0)由於86小端格式:

#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 

,你可以看到,組件被放置在單獨的數組元素。

相關問題