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,直接拿字符串处理}