[問題] 位址儲存至陣列問題

看板C_and_CPP作者時間15年前 (2010/05/13 08:43), 編輯推噓2(2017)
留言19則, 3人參與, 最新討論串1/1
請問各位神人.. 我已經寫好一個判斷網路封包內容位址的程式 比如: . . . 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

05/13 08:49, , 1F
位址?你想存的到底是什麼東西?
05/13 08:49, 1F

05/13 08:52, , 2F
阿 不好意思沒有說明清楚
05/13 08:52, 2F

05/13 08:53, , 3F
i==1&&j==9 為判斷封包位址,它是16進位
05/13 08:53, 3F

05/13 08:53, , 4F
if(*Payload==00) 代表如果此位址為0x00
05/13 08:53, 4F

05/13 08:54, , 5F
我要把擷取的第一個封包位址儲存成陣列,與第個二封包比
05/13 08:54, 5F

05/13 08:55, , 6F
所以可能要把儲存在陣列的16進位轉成int型式
05/13 08:55, 6F

05/13 08:55, , 7F
才能相減
05/13 08:55, 7F

05/13 08:56, , 8F
比如第一個擷取到的位址為 0x40 轉為int就是64
05/13 08:56, 8F

05/13 08:57, , 9F
第二個擷取到的位址為0x80,int 就為128
05/13 08:57, 9F

05/13 08:58, , 10F
然後128-64 = 64 ,差距在30以上,故不理會
05/13 08:58, 10F

05/13 09:15, , 11F
阿~上面打錯 差距30以上 故count ++ ^^"
05/13 09:15, 11F

05/13 09:30, , 12F
十進位還是十六進位只有在顯示或你打字的時候有差,
05/13 09:30, 12F

05/13 09:30, , 13F
對電腦來說0x40就是64, 根本不用做什麼轉換....
05/13 09:30, 13F

05/13 09:31, , 14F
所以你要存的是*Payload?? 而且只要比前一個?? 那好像不
05/13 09:31, 14F

05/13 09:31, , 15F
用array, 開一個變數叫previous, 型態與 (*Payload) 相
05/13 09:31, 15F

05/13 09:32, , 16F
同即可; Ex: 假如Payload為int *, 那讀完Payload以後,
05/13 09:32, 16F

05/13 09:33, , 17F
previous = *Payload; 就存下來了, 之後在合適處比對就
05/13 09:33, 17F

05/13 09:33, , 18F
好. 當然, 先前 int previous = ??; // ??要給合適初值.
05/13 09:33, 18F

05/13 10:09, , 19F
感謝Vi大的回答 ^_^
05/13 10:09, 19F
文章代碼(AID): #1BwqjAlZ (C_and_CPP)