把两个字符合并成单个字符(0,a 合成0x0a)

    最近弄一个项目过程中,因为串口数据传输时,协议要求把0x0a拆成2个字符0和a,换成十六进制就是0x30和0x41两个字符发送,但是数据包填充后要用CRC校验,CRC校验确又是用的原字符去校验,即把0x0a去校验。所以这里需要把拆开后的两个字符合并成一个字符,用于CRC校验。为此特地写了个函数去实现。代码如下

//两个字符合并成一个字符 (把 0,a 合并成0x0a)
unsigned char catChar2Hex(unsigned char hByte,unsigned char lByte)
{
	unsigned char ucTmp = 0x00;
	unsigned char hight;
	unsigned char low;
	if ( (hByte >= 'A') && (hByte <= 'F') )
	{
		hight = hByte - 'A' + 10;
	}
	else if (hByte >= 'a' && hByte<='f')
	{
		hight = hByte - 'f' + 10;
	}
	else if (hByte >= '0' && hByte <= '9')
	{
		hight = hByte - '0';
	}
	else
	{
		ucTmp = 0xff;
	}
	if ( (lByte >= 'A') && (lByte <= 'F') )
	{
		low = lByte - 'A' + 10;
	}
	else if (lByte >= 'a' && lByte<='f')
	{
		low = lByte - 'f' + 10;
	}
	else if (lByte >= '0' && lByte <= '9')
	{
		low = lByte - '0';
	}
	else
	{
		ucTmp = 0xff;
	}
	
	ucTmp = (hight<<4) | (low << 0);
	//printf("0x%02x",(int)ucTmp);


	return ucTmp;
}

你可能感兴趣的:(C语言编程)