unsigned char指针内容如何比较?

C++ 比如我有一个unsigned char * p={101,202,12,8,0,32,46,58,231,255,18,64,78}
问:
1:如何判断p(3-4)=={8,0} 且 p(9)={255}
2:如何判断{231,255,18,64}的起始位置,返回8

如果你硬要用 * 的话,你就将下面的访问方式改成 * (p+id)即可


const int num=13;
unsigned char p[num]={101,202,12,8,0,32,46,58,231,255,18,64,78};
bool judge3=(p[3]==8)? true : false;
bool judge4=(p[4]==0)? true : false;
bool judge9=(p[9]==255)? true : false;
bool judge_condition2=false;
int judge_condition2_id=0;
for(int id=0;id!=num;id++)
{
    if(p[id]==231 && (id+3<num && p[id+3]==64) && p[id+2]==18 && p[id+1]=255)
    {
        judge_condition2=true;
        judge_condition2_id=id;
        break;
    }
}
if(judge_condition2)
    printf("judge_condition2_id:%d \n",judge_condition2_id);

1.可以使用if语句来判断,如果p[3]和p[4]的值分别等于8和0,并且p[9]的值等于255,则可以判断为真。
2.可以使用循环来查找,从p[0]开始遍历,如果发现p[i]、p[i+1]、p[i+2]、p[i+3]的值分别等于231、255、18、64,则返回i的值,即起始位置。

// 判断p(3-4)=={8,0} 且 p(9)={255}
if (p[3] == 8 && p[4] == 0 && p[9] == 255) {
    // do something
}
// 判断{231,255,18,64}的起始位置,返回8
int startIndex = -1;
for (int i = 0; i < p.length; i++) {
    if (p[i] == 231 && p[i+1] == 255 && p[i+2] == 18 && p[i+3] == 64) {
        startIndex = i;
        break;
    }
}
if (startIndex != -1) {
    // do something
}