/************************************************
功能:将整形转换为ascii码字符串
示例:dat = 12345 buffer[10]
转换后
buffer[0] = '1'
buffer[1] = '2'
...
buffer[4] = '5'
buffer[5] = '\n'
**********************************************/
void DtoA(unsigned long dat, unsigned char* buffer)
{
unsigned long tmp = dat;
char length = 0;
while(tmp != 0)//求出数字的实际长度
{
tmp = tmp/10;
length++;
}
buffer[length] = '\0';//长度数为字符串截止位
length--;
while(length >= 0)//数字的低位放入数组的高位
{
tmp = dat%10;
buffer[length--] = 0x30|tmp;
dat = dat/10;
}
}
/****************************************************
功能:将ascii码字符串(非ascii也可)转换成对应数字
unsigned char code date[] = "1234567"; -> 返回 1234567
unsigned char code date_neg[] = "-1234567"; -> 返回 -1234567
****************************************************/
long mi(unsigned char dat, unsigned char mi)
{
unsigned char i;
long sum = 1;
for(i=0; i<mi; i++)
{
sum = sum * dat;
}
return sum;
}
long AtoD(unsigned char* buffer)
{
long dat = 0, tmp = 0,k;
unsigned char i;
char j = 0;
i = strlen(buffer);
if(buffer[0] == '-')
{
j = 1;
}
for(; j<i; j++)
{
tmp = buffer[j]&0x0f;//如果原数组中存放的是ascii码,直接将其转换为数字
k = mi(10,i-j-1);
tmp = k * tmp;
dat += tmp;
}
if(buffer[0] == '-')
{
return -dat;
}
return dat;
}
void SendString(unsigned char* String)
{
int i=0;
while(String[i] != '\0')
{
SendData(String[i]);
i++;
}
}
void SendDig(long dat)
{
char buffer[36];
DtoA(dat, buffer);
SendString(buffer);
}