【中级】报文转换

#include #include "OJ.h"#include using namespace std;/*功能: 将给定的报文按规则转换成另一个报文后输出。 转换规则如下: 报文中如果出现0x7E,转义成为2个字节0x7D 0x5E,如果出现0x7D,转义成为2个字节0x7D 0x5D。最后在报文头尾各加上一个0x7E定界。 示例(每个字节以十六
摘要由CSDN通过智能技术生成
#include <stdlib.h>
#include "OJ.h"
#include <string>
using namespace std;


/*
功能:
    将给定的报文按规则转换成另一个报文后输出。
    转换规则如下:
    报文中如果出现0x7E,转义成为2个字节0x7D 0x5E,如果出现0x7D,转义成为2个字节0x7D 0x5D。最后在报文头尾各加上一个0x7E定界。

    示例(每个字节以十六进制数表示)
    给定原始报文:1D 2B 3C 4D 5E 7E 6F 7D 7E
    转换后的报文:7E 1D 2B 3C 4D 5E 7D 5E 6F 7D 5D 7D 5E 7E

输入:
char* pInput: 给定的输入报文,内存空间由调用者申请和释放
int iLen: 给定报文的长度   
输出:
char* pOutput:转换后的报文,内存空间由调用者申请和释放
返回:
int: 成功 0, 失败 -1

*/

int PktTrans(char* pInput, int iLen, char* pOutput)
{

	if(pInput==NULL||*pInput=='\0'|| (iLen < 0) || (iLen >= 100)||pOutput==NULL)
	{
		return -1;
	}
	if(iLen==0)return 0;
	
	char temp[150];

	int i=0;
	int j=0;
	bool isIn=false;
	for(;i<iLen;i++)
	{	
			if(pInput[i]==0x7E)
			{	
				temp[j]=0x7D;
				temp[j+1]=0x5E;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值