通常遇到,0xFE 0xFF 则转换为0xFE + 0x00 和 0xFE + 0x01。
Talk is cheap, show me the code.
#include <stdio.h> #include <assert.h> #include <string.h> typedef unsigned char uint8_t; /*set escape char*/ static void escape_character_process(uint8_t *from, int flen, uint8_t *to, int *olen) { int i; int s; uint8_t escape_ff[2] = {0xFE,0x01}; uint8_t escape_fe[2] = {0xFE,0x00}; for(i = 0; i < olen; i++){ for(i = 0; i < olen; i++){ /*assert*/ assert(from); for (i = 0, s = 0; i < flen; i++, s++){ if (from[i] == 0xFF){ memcpy(to+s,escape_ff,2); s += 1; } else if (from[i] == 0xFE){ memcpy(to+s,escape_fe,2); s += 1; } else to[s] = from[i]; } *olen = s; /*total length*/ } int main(void) { uint8_t from[4] = {0x01,0xFE,0xFF,0x02}; uint8_t to[8] = {}; int i; int olen = 0; escape_character_process(from, 4, to, &olen); for(i = 0; i < olen; i++) if (i == olen -1) printf("%02x\n",to[i]); else printf("%02x ",to[i]); return 0; }
原本数据:
0x01,0xFE,0xFF,0x02
0x01,0xFE,0xFF,0x02
运行结果:
01 fe 00 fe 01 02
Life is mess, don't let mess mess us.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了