C语言将十六进制数转换为ASCII码

C语言将十六进制数转换为ASCII码

如题,将输入的十六进制数转换成为对应的ASCII码并合并成为一个byte:

例如:86 FF E0 00输入时对应的ASCII命令为:
38 36 20 66 66 20 65 30 20 30 30 0D(归位) 0A(换行)   //输入时空格也会转换
使用C语言在程序中将命令还原为86 FF E0 00,代码如下:
u8 Hex2Char(u8 HByte, u8 LByte) //传入两个十六进制数
{
   	 u8 trans_data = 0x00;
	 u8 Hight;
	 u8 Low;
	 trans_data = 0;
	 printf("\n%bx,%bx", HByte, LByte);
	 if ( (HByte >= 0x41) && (HByte < 0x47) )
		{
			Hight = HByte - 0x37; // 0x41 - 0x0a == 0x37
	    }
	else if (HByte >= 0x61 && HByte < 0x67)
		{
			Hight = HByte - 0x57; // // 0x61 - 0x0a == 0x57
	    }
	else if (HByte >= 0x30 && HByte <= 0x39)
		{
			Hight = HByte - 0x30;
	    }
	else
		{
		trans_data = 0xff;
	    }
	 //printf("\nHight: %bx", Hight);
	if ( (LByte >= 0x41) && (LByte < 0x47) )
		{
			Low = LByte - 0x37;
	    }
	else if (LByte >= 0x61 && LByte< 0x67)
		{
			Low = LByte - 0x57;
	    }
	else if (LByte >= 0x30 && LByte <= 0x39)
		{
			Low = LByte - 0x30;
	    }
	else
		{
		trans_data = 0xff;
	    }
	 //printf("\nLow: %bx", Low);
	 trans_data = (Hight<<4) | (Low << 0);//高位左移4位,低位不移动,组成一个8位十六进制字符
	 printf("\n%02bx", trans_data);
	 Hight = 0; Low = 0;
	 return trans_data;

}

代码运行结果:
'#'作为命令结束标志:
C语言将十六进制数转换为ASCII码_第1张图片

你可能感兴趣的:(c语言)