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我怎麼能得到這兩個值。 ?收集的價值,並將其存儲在單獨的變量
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我怎麼能得到這兩個值。 ?收集的價值,並將其存儲在單獨的變量
出了什麼問題只是修改你的代碼:
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
,你可以看到,組件被放置在單獨的數組元素。
你想使用它們還是隻打印它們?另外,你怎麼做了這麼複雜的事情,但不知道如何調整代碼,甚至做一些不同的事情? – 2011-01-13 07:52:02