c语言如何把二进制数转化为十进制数

用函数的方法,尽量体谅一下我这个初学者,不要太复杂

//*********************************************
//不使用求余和除法的二进制转bcd的算法
//使用了C51中 指令DA的思路
//本人原创 已测试 以应用实际项目中
//Lhex_to_bcd
//*********************************************
//**************************
// 数据自加 并作10进制检查
//
//**************************
void C51_DA(unsigned char *da1,unsigned char Ln,unsigned char ac0)
{
unsigned char i;
unsigned char ac = ac0;//进位标志

for(i=0;i<Ln;i++)
{
da1[i] = da1[i] + da1[i] + ac;

if(da1[i] > 9)
{
da1[i] = da1[i] - 10;
ac = 1;
}
else
{
ac= 0;
}
}
}

//**************************************
// 多字节整形转 bcd
// 结果保存为非压缩bcd码
// 输入数据
// da1 用来保存转换结果
// 长度大于 (l+1)*2
// da2 被转换数据
// l da2 长度 用字节个数表示
// 输出 无
//**************************************
void Lhex_to_bcd(unsigned char *da1,unsigned char *da2,unsigned char l)
{
unsigned char i;
unsigned char m;
unsigned char tmp;
unsigned char Ln = (l+1)*2; //计算结果的长度

for(i=0;i<Ln;i++) //初始化计算结果
da1[i] = 0;

for(m=0;m<l;m++) //循环输入数据的字节数
{
tmp = da2[l-1-m];

for(i=0;i<8;i++)//每个字节循环8次
{
if(tmp&0x80) //取最高 1 bit
C51_DA(da1,Ln,1);
else
C51_DA(da1,Ln,0);
tmp<<=1;
}
}
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-12-28

第2个回答  2010-06-06
纯数学方法会 C就不会
相似回答