C语言转换十六进制为十进制形式的字符串


C语言转换十六进制为十进制形式的字符串,有如下内容.

   
  unsigned char a = 0x02;
  
unsigned char b = 0xa0;

我需要转换成十进制形式,理应应该先16转10吧,然后转成字符串.最后我要得到的形式是.

   
  unsigned char a = "2";
  
unsigned char b = "160";

如何转换呢,在嵌入式系统,不是printf这些输出.

c 嵌入式

Heavnes 11 years, 7 months ago

不知道你说的是不是BCD码输出,如果想把数值按照十六进制输出时得到的是十进制的结果不妨做如下运算:

   
  unsigned char a = 0x02;
  
unsigned char b = 0xa0;
unsigned int baiwei = 0;//用于保存b的BCD码的百位
unsigned int shiwei = 0;//用于保存b的BCD码的十位
unsigned int gewei = 0;//用于保存b的BCD码的个位
unsigned int c = 0;//用于保存BCD码
baiwei = b / 100;
shiwei = (b % 100) / 10;
gewei = b % 10;
c = (baiwei << 16) + (shiwei << 8) + gewei;

東方妖女乱舞 answered 11 years, 7 months ago

Your Answer