编辑代码

#include <stdio.h>
#include "stdint.h"
#include "string.h"


int Escape_Detect(uint8_t *data,int len);

int main () 
{    
   

    uint8_t x_0002_data[16]={0x7e,0x75,0x69,0x7e,0x95,0x7d,0x45,0x7e};
    uint16_t lenX = 0x00;
    

      
    lenX = strlen(x_0002_data);
      
    int len = Escape_Detect(x_0002_data,lenX);  
printf("len=%d\n",len);

}  

/*转义检测*/
int Escape_Detect(uint8_t *data,int len)
{

    uint8_t tmp[128] = {0};
    int tmp_len = 0;
    for (int x = 1; x < len - 1; x++)
    {
       
        if (data[x] == 0x7d)
        {
            tmp_len = len - x - 1;
            memcpy(tmp, data + x + 1, tmp_len);

            len = x;
            data[len++] = 0x7d;
            data[len++] = 0x01;

            for (int y = 0; y < tmp_len; y++)
            {
                data[len++] = tmp[y];
            }
            memset(tmp, 0, len);
            tmp_len = 0;
        }
    }
           

    for (int x = 1; x < len - 1; x++)
    {
        if (data[x] == 0x7e)
        {
                   

            tmp_len = len - x - 1;
            memcpy(tmp, data + x + 1, tmp_len);

            len = x;
            data[len++] = 0x7d;
            data[len++] = 0x02;

            for (int y = 0; y < tmp_len; y++)
            {
                data[len++] = tmp[y];
            }
            memset(tmp, 0, len);
            tmp_len = 0;
        }

    }
           

    for(int i=0;i<len;i++)
    {
        printf("%02x ",data[i]);
    } 
return len;
}