C语言中char字符型数据的存取形式:ASCII码之间的转换

unsigned char channelNum=49;

则编译器会将ASCII码49存入变量channelNum,实际channelNum表示字符1,所以下次如果以%c形式打印出来,则输出1。

e.g:

查看代码
unsigned char channelNum=49;

#include"bsp_seg.h"
#include"bsp_Init.h"

//------------------------------------
//将segString的所有字符 转换为 数码管段码,存储到segBuf数组中。
void segTran(unsigned char *segString, unsigned char *segBuf)
{
	unsigned char temp=0;
	unsigned char i=0;
	unsigned char j=0;
	
	for(i=0;i<8;i++,j++)
	{
		switch(segString[j])
		{
			case '0':	temp=0x3F;break;
			case '1':	temp=0x06;break;
			case '2':	temp=0x5B;break;
			case '3':	temp=0x4F;break;
			case '4':	temp=0x66;break;
			case '5':	temp=0x6D;break;
			case '6':	temp=0x7D;break;
			case '7':	temp=0x07;break;
			case '8':	temp=0x7F;break;
			case '9':	temp=0x6F;break;
			
			case 'E':	temp=0x79;break;
			case 'C':	temp=0x39;break;
			case 'F':	temp=0x71;break;
			case 'N':	temp=0x37;break;			
			case 'U':	temp=0x3E;break;
			
			case '-':	temp=0x40;break;
			case ' ':	temp=0x00;break;
			
			default:	temp=0x00;break;
		}
					
		if(segString[j+1] == '.')
			{
				temp |= 0x80;
				j++;						//并跳过segString中的下一位
			}
			
		segBuf[i] = temp;//将转换后的段码值传递给Buf存储
	}
}

sprintf(segString, "U-%c",channelNum);//以%c输出,则系统会寻找ASCII码49对应的字符,所以输出U-1
sprintf(segString, "U-%d",(unsigned int)channelNum);//系统会将字符型数据49强制转换为整型,以%d形式输出,则为U-49

ASCII参考表:点击跳转

posted @ 2024-03-30 19:58  iZJ"Qq4577105  阅读(33)  评论(0编辑  收藏  举报