ppp协议编码与解码
更新时间:2023-05-12 10:20:02 阅读量: 实用文档 文档下载
- 手机编码解码协议怎么看推荐度:
- 相关推荐
ppp协议编码与解码
编码就是按照前面所说的对需要转义的字符进行变换,下面是简单的实现代码: 001 #define PPP_FRAME_FLAG 0x7e /* 标志字符 */
002 #define PPP_FRAME_ESC 0x7d /* 转义字符 */
003 #define PPP_FRAME_ENC 0x20 /* 编码字符 */
004 #define BUF_LEN 1500
005 /* return: bytes encoded */
006 int pppEncode(unsigned char * buf, int len) {
007 unsigned char * pi, * po;
008 int i, olen;
009 unsigned char obuf[BUF_LEN];
010 if(len > (BUF_LEN>>1)) {
011 return -1;
012 }
013 memset(obuf, 0, BUF_LEN);
014 pi = buf;
015 po = obuf;
016 olen = len;
017 for(i=0; i<len; i++) {
018 /* byte needs encode, encode it */
019 if(*pi == PPP_FRAME_FLAG
020 || *pi == PPP_FRAME_ESC
021 || *pi < 0x20) {
022 *po = PPP_FRAME_ESC;
023 po++;
024 olen++;
025 /* xor the 6th bit */
026 *po = *pi ^ PPP_FRAME_ENC;
027 }
028 else {
029 *po = *pi;
030 }
031 pi++;
032 po++;
033 }
034 memcpy(buf, obuf, olen);
035 return olen;
036 }
001~003: 定义标志字符,转义字符和编码字符。
010~012: 检查要编码的字符长度,按最坏情况,一个字符会编码成两个字符,所以这里只能编码最大缓冲区长度一半。
018~027: 编码的主要实现,遇到标志字符,转义字符和小于0x20的控制字符,都要进行编码。方法就是在其前面插入一个转义字符0x7d,然后对其第6位取补码。
028~030: 其他字符,不做任何修改。
034~035: 修改缓冲区,返回编码后的字符长度。
ppp协议编码与解码
解码实际上就是编码的逆运算,它除去转义字符,并对转义字符之后的字符的第6位去补码。 001 /* return: bytes decoded */
002 int pppDecode(unsigned char * buf, int len) {
003 unsigned char * pi, *po;
004 int i, olen;
005 unsigned char obuf[BUF_LEN];
006 if(len > BUF_LEN) {
007 return -1;
008 }
009 memset(obuf, 0, BUF_LEN);
010 pi = buf;
011 po = obuf;
012 olen = len;
013 for(i=0; i<len; i++) {
014 if(*pi == PPP_FRAME_ESC) {
015 /* skip the escape byte */
016 pi++;
017 olen--;
018 /* xor the 6th bit */
019 *po = *pi ^ PPP_FRAME_ENC;
020 }
021 else {
022 *po = *pi;
023 }
024 pi++;
025 po++;
026 }
027 memcpy(buf, obuf, olen);
028 return olen;
029 }
006~008: 检查要解码的字符长度。
014~020: 解码的主要实现,遇到转义字符,将其跳过,对紧接其后的字符的第6位去补码。
021~023: 其他字符,不做处理。
027~028: 修改缓冲区,返回解码后的字符长度。
正在阅读:
ppp协议编码与解码05-12
中国宾馆纺织用品行业市场前景分析预测年度报告(目录) - 图文11-07
职业健康方针及目标公告08-06
2019语言文字工作总结11-28
室内设计师常用尺寸08-11
茶艺、酒吧经营 教学大纲06-17
高考语文二轮复习专题资料 第1部分 第3章 题点训练1 句子作用分05-21
中山市期末水平测试八上语文试卷01-19
柳暗花明02-14
- 教学能力大赛决赛获奖-教学实施报告-(完整图文版)
- 互联网+数据中心行业分析报告
- 2017上海杨浦区高三一模数学试题及答案
- 招商部差旅接待管理制度(4-25)
- 学生游玩安全注意事项
- 学生信息管理系统(文档模板供参考)
- 叉车门架有限元分析及系统设计
- 2014帮助残疾人志愿者服务情况记录
- 叶绿体中色素的提取和分离实验
- 中国食物成分表2020年最新权威完整改进版
- 推动国土资源领域生态文明建设
- 给水管道冲洗和消毒记录
- 计算机软件专业自我评价
- 高中数学必修1-5知识点归纳
- 2018-2022年中国第五代移动通信技术(5G)产业深度分析及发展前景研究报告发展趋势(目录)
- 生产车间巡查制度
- 2018版中国光热发电行业深度研究报告目录
- (通用)2019年中考数学总复习 第一章 第四节 数的开方与二次根式课件
- 2017_2018学年高中语文第二单元第4课说数课件粤教版
- 上市新药Lumateperone(卢美哌隆)合成检索总结报告
- 解码
- 编码
- 协议
- ppp
- SQL Server2000连接中最常见错误分析
- 创业型企业人才招聘中存在的问题及相关建议措施
- 毛主席诗词书法作品集序doc
- 东北师大《远方有你》歌词
- 振动信号AR模型谱估计算法研究论文
- 观南宁革命烈士纪念碑有感
- 8中考物理专题速度的计算
- 厌氧反应器的发展历程与应用现状
- 不可不知的签证与护照区别
- Children’s capacity to remember a novel problem and to secure its future solution (pages 26–33)
- 中国古代名人名言
- 零售学7 采购管理
- 探析建筑工程如何合理控制造价
- 平安就是最大的幸福
- 年产100万立方预拌混凝土项目
- 2015年人大金融硕士就业
- 铁路电气化附加费费率表、新路新价均摊运费核收办法
- 2012年安徽省初中毕业学业考试
- 广东省清远市县级及以上政府部门属研究与开发机构科技活动人员数量情况3年数据专题报告2020版
- 高中物理选修3-2交变电流 传感器知识点及练习