首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

BCD码转换成浮点型解决方法

2012-03-23 
BCD码转换成浮点型如题,如果一个数组为unsigned char str[4]{0x00,0x01,0x02,0x03},如何转换成102.03或者

BCD码转换成浮点型
如题,如果一个数组为unsigned char str[4]={0x00,0x01,0x02,0x03},如何转换成102.03或者10.203或者0.10203,最好是能够通用的

[解决办法]
首先转成正经的字符串,然后转换成浮点数。

C/C++ code
char *bcd2str(uchar *bcd, int id){//id表示小数点插在第x个字符前面  int size=bcd长度;  int j=0;  char *ret=new char[size*2+2]; memset(ret, 0, size*2+2)  for (int i=0; i<size; i++)  {    if (i==id) ret[j++]='.';    ret[j*2-1]=bcd[i]>>4 + '0';   //高4位    ret[j*2]=bcd[i] & 16 + '0';   //低4位    j++;  }  return ret;  //这时你的bcd数组会变成类似"0001.0203"的样子。  //然后可以直接用atof转成浮点(注意精度)。或者自己过滤两边的0,直接拿字符串处理} 

热点排行