#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;
}