我顯示我的緩衝區這樣的:保存緩存到一個變量
void WINAPI MyUCPackets(char* unpkt, int packetlen, int iR, int arg)
cout << "[" << packetlen << "] ";
for (int i = 0; i < packetlen; i++) {
printf("%02x ", unsigned char (unpkt[i]));
}
printf("\n");
現在,我需要檢查,如果緩衝區的部分包含像一個特定值:
if(unpkt[1] == 0xfb && unpkt[2] == 0x05 && unpkt[3]== 0x20)
{
unpkt = dcpkt;
}
從打印輸出:
6C FB 05 20 00
我需要檢查是否使用確切的緩衝區,除了第一個字節,因爲它的隨機。
但它不起作用。該條件沒有得到執行,我相信unpkt1是0xfb,unpkt2是05,因爲緩衝區的打印顯示該值。
我試圖用sprintf
來將緩衝區存儲爲十六進制但看起來很混亂。任何其他想法?
sprintf(buf2, "%02X", unpkt[1]);
什麼是你的第一個片段看到輸出?你知道C++中的數組是基於零的,是嗎? – cdhowie 2013-03-21 16:21:49
你的意思是檢查'unpkt [0]'和'unpkt [1]'? – 2013-03-21 16:21:53
我更新了我的問題。謝謝。我不需要'unpkt [0]'它是隨機的。我只需要檢查其餘的。 – madziikoy 2013-03-21 16:23:21