作者acidradix ()
看板C_and_CPP
標題[問題] 位址儲存至陣列問題
時間Thu May 13 08:43:51 2010
請問各位神人..
我已經寫好一個判斷網路封包內容位址的程式
比如:
.
.
.
case 128: // 0x80 = 128
packet_type = 6; // Beacon frame:0x80
break;
.
.
if(packet_type==3&&i==1&&j==9) //代表Beacon封包的第1列第9個位址
if(*Payload==00) //如果此位址為0x00
printf("Receive a xxxx frame"); //代表收到何種特徵的frme
請問如何將此位址(i==1&&j==9)丟入陣列中
並且比對第一個接收到的位址與第二個接收到的位址,相差30以上
如果相差30以上 count ++ count > 100發出警告
依此列推...
我主要是想不出來如何將位址丟入陣列中
初略的想法只有:
A[0] = *Payload
A[1] = *Payload
在此先感謝各位的回答 :)
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 163.25.118.174
推 LPH66:位址?你想存的到底是什麼東西? 05/13 08:49
→ acidradix:阿 不好意思沒有說明清楚 05/13 08:52
→ acidradix:i==1&&j==9 為判斷封包位址,它是16進位 05/13 08:53
→ acidradix:if(*Payload==00) 代表如果此位址為0x00 05/13 08:53
→ acidradix:我要把擷取的第一個封包位址儲存成陣列,與第個二封包比 05/13 08:54
→ acidradix:所以可能要把儲存在陣列的16進位轉成int型式 05/13 08:55
→ acidradix:才能相減 05/13 08:55
→ acidradix:比如第一個擷取到的位址為 0x40 轉為int就是64 05/13 08:56
→ acidradix:第二個擷取到的位址為0x80,int 就為128 05/13 08:57
→ acidradix:然後128-64 = 64 ,差距在30以上,故不理會 05/13 08:58
→ acidradix:阿~上面打錯 差距30以上 故count ++ ^^" 05/13 09:15
推 VictorTom:十進位還是十六進位只有在顯示或你打字的時候有差, 05/13 09:30
→ VictorTom:對電腦來說0x40就是64, 根本不用做什麼轉換.... 05/13 09:30
→ VictorTom:所以你要存的是*Payload?? 而且只要比前一個?? 那好像不 05/13 09:31
→ VictorTom:用array, 開一個變數叫previous, 型態與 (*Payload) 相 05/13 09:31
→ VictorTom:同即可; Ex: 假如Payload為int *, 那讀完Payload以後, 05/13 09:32
→ VictorTom:previous = *Payload; 就存下來了, 之後在合適處比對就 05/13 09:33
→ VictorTom:好. 當然, 先前 int previous = ??; // ??要給合適初值. 05/13 09:33
→ acidradix:感謝Vi大的回答 ^_^ 05/13 10:09