我显示我的缓冲区这样的:保存缓存到一个变量
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