char)*)pf+i)=*(px+i);
//转换float数据到字节数组
unsigned char i;
float floatVariable;
unsigned char charArray[4];
(unsigned char) *
pdata
= ((unsigned char)*)&floatVariable; //把float类型的指针强制转换为unsigned char型
for(
i
=
0
;i
<
4
;i++)
{
charArray[i] = *pdata++;//把相应地址中的数据保存到unsigned char数组中
}
//转换字节数组到float数据
float floatVariable;
unsigned char i;
void *pf;
pf
= &floatVariable;
(unsigned char) *
px
=
charArray
;
for(
i
=
0
;i
<
4
;i++)
{
*(((unsigned
}
数据类型转换一般不应该大转小,哪里有大转小的。如果你非要转换成字符类型,必须用字符类型数组了。至于方法,我琢磨着会很多。随便给你写个思路。
unsigned char valuetemp[];
float a = 1.25; //假设此a后面的位数不知。
int b =0;
int step = 1;
b = a*10^6; //强转,且最后一位必定为0
for( int i =0,;i<8;i++)
{
valuetemp[count++] = b || (~(b<<
//因为float最多只能有7位有效数字,所以咱们统一给这个a乘以10^6 存入b;
你看着办吧。或许你问的问题没这么复杂,我想到的是单片机按位操作。
直接赋值就成.
但是你自己应该清楚, unsigned char只有一字节, 这样转换是会丢掉精度的.
这需要强制转换 unsigned char a=(unsigned char)b
强制类型转换
float b;
unsigned char a=(unsigned char)b;