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

 我来答
百度网友96ffcf7
2015-05-23 · 知道合伙人互联网行家
百度网友96ffcf7
知道合伙人互联网行家
采纳数:22721 获赞数:118715
从事多年网络方面工作,有丰富的互联网经验。

向TA提问 私信TA
展开全部
  1. 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
    }
Mocakeak
2012-11-07 · 贡献了超过113个回答
知道答主
回答量:113
采纳率:100%
帮助的人:20.2万
展开全部
数据类型转换一般不应该大转小,哪里有大转小的。如果你非要转换成字符类型,必须用字符类型数组了。至于方法,我琢磨着会很多。随便给你写个思路。
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;

你看着办吧。或许你问的问题没这么复杂,我想到的是单片机按位操作。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
binglink
2012-11-07 · TA获得超过1101个赞
知道小有建树答主
回答量:639
采纳率:0%
帮助的人:452万
展开全部
直接赋值就成.
但是你自己应该清楚, unsigned char只有一字节, 这样转换是会丢掉精度的.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yr2137205
2012-11-07
知道答主
回答量:30
采纳率:0%
帮助的人:14.3万
展开全部
这需要强制转换 unsigned char a=(unsigned char)b
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
kylukuan
2012-11-07 · 超过22用户采纳过TA的回答
知道答主
回答量:160
采纳率:0%
帮助的人:68.5万
展开全部
强制类型转换
float b;
unsigned char a=(unsigned char)b;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式