在单片机的开发中经常遇见过要在OLED或1602等中显示一些数字,但在程序中计算的是整形数据,需要把整形数据转换为字符型的数组才能显示。因此下面提供一种方法给大家参考,当然也有其他的方法
void Init_To_String(uchar *String,int Init_Data)
{
if(Init_Data < 0)
{
Init_Data=-Init_Data;
*String='-';
}
else *String=' ';
//这里整形的Init_Data最大值为65535时16位的二进制数,所以除以10000得出最高位的数,后面加0X30是为了对应上ASCII表中相应的字符。数字0-9的ASCII表中的值为(十六进制)0X30-0X39,
//这里用到指针,其实是一组数组通过指针访问保存数据
*++String =Init_Data/10000+0x30;
//这里的求余运算是为了去掉最高位,继续执行下面的转换。
Init_Data=Init_Data%10000;
//这里继续上面的操作一位一位地转换为字符型数据
*++String =Init_Data/1000+0x30;
Init_Data=Init_Data%1000;
*++String =Init_Data/100+0x30;
Init_Data=Init_Data%100;
*++String =Init_Data/10+0x30;
Init_Data=Init_Data%10;
*++String =Init_Data+0x30;
}