单片机编程中(IVVAVR),如何把四字节数据转换为float类型?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了单片机编程中(IVVAVR),如何把四字节数据转换为float类型?相关的知识,希望对你有一定的参考价值。

有四个字节数据unsigned char charArray[4];怎么转换为float类型
错了,是ICCAVR

参考技术A float,是一种特殊的编码格式。里面规定了整数的位数和小数的位数,以及整数部分的值和小数部分的值。这样,当每一次运算时(算术运算、逻辑比较运算),CPU会先将其按照“规定”把整数部分的数值计算出来、再把小数部分的数值计算出来,求出完整的值,然后再进行运算。

所以, 不知道你所说的charArry[],里面装的是什么东西,是否也有整数部分和小数部分。若是的话,那就属于定点数数据了。那么你可以将这4个u8中的整数部分和小数部分分别提取出来,然后拼装到1个float变量里。追问

我就想问怎么拼装,比如说charArry[]=0x3f,0x25,0x92,0x22;如果比这四个字节赋值给float变量PV,那么PV应该就是0x3f259222,我是想问怎么把charArry[]这个数组付给PV的,有什么简单的方法?

本回答被提问者和网友采纳

指针的骚操作- 变量拼接和分离

/*此代码在 51单片机上验证通过,51为8位单片机,char占1个字节,long占四个字节*/
int main(void)
{
    unsigned long iii;
    unsigned char temp[4]={0xEC,0xEF,0x45,0x12};
    // 把四个 unsigned char 拼成一个 unsigned long.
    iii=*(unsigned long *)tempTime;
    SendString(string);
    // 把一个 unsigned long 分成四个 unsigned char.
    *(unsigned long *)tempTime = iii;
    SendString(tempTime);
    while(1);
}

 

以上是关于单片机编程中(IVVAVR),如何把四字节数据转换为float类型?的主要内容,如果未能解决你的问题,请参考以下文章

指针的骚操作- 变量拼接和分离

自带12位AD转换器的51系列单片机

十天学会单片机Day6 学会看数据手册 (IIC总线PCF859芯片( A/D D/A)应用)

EEPROM的存储大小

如何在objective-c中将字节值转换为int

怎样将长整型(long int)通过单片机串口发送,从另一个单片机串口接收。