如何将float 型数据转换为unsigned char 型

如题所述

    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
    }
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-11-07
数据类型转换一般不应该大转小,哪里有大转小的。如果你非要转换成字符类型,必须用字符类型数组了。至于方法,我琢磨着会很多。随便给你写个思路。
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<<<step++)) ;
}
//因为float最多只能有7位有效数字,所以咱们统一给这个a乘以10^6 存入b;

你看着办吧。或许你问的问题没这么复杂,我想到的是单片机按位操作。本回答被网友采纳
第2个回答  2012-11-07
直接赋值就成.
但是你自己应该清楚, unsigned char只有一字节, 这样转换是会丢掉精度的.
第3个回答  2012-11-07
这需要强制转换 unsigned char a=(unsigned char)b本回答被提问者采纳
第4个回答  2012-11-07
强制类型转换
float b;
unsigned char a=(unsigned char)b;