gpt4 book ai didi

c - 读回 float

转载 作者:行者123 更新时间:2023-11-30 15:36:21 25 4
gpt4 key购买 nike

我正在使用微芯片 c18,并且我有这个函数,可以将浮点分成 4 个相应的字节。并且 C18 遵循小字节序

a[0]=*(fptr);        address 0
a[1]=*(fptr+1); 1
a[2]=*(fptr+2); 2
a[3]=*(fptr+3); 3

并写入串行EEPROM。

如果我想读回浮点变量。

float read_float(void)
{ float f;
unsigned char *fptr;
fptr=&f;

*(fptr)=eepromread(0);
*(fptr+1)=eepromread(1);
*(fptr+2)=eepromread(2);
*(fptr+3)=eepromread(3);

return(f);
}

这个函数会返回浮点变量吗?我现在没有任何硬件和模拟工具。

我相信我的问题很清楚。编辑:

在这样做的同时。将 char 分配给 float 时发生编译器不匹配错误。我如何消除该错误?

最佳答案

最简洁的方法是*(char*)(fptr+i) = eepromread(i);。您需要将初始指针的偏移量转换为指向字符的指针,并取消引用。

此外,至少我的编译器(gcc)对第一个赋值犹豫不决。您需要类似于 fptr = (char*)(&f); 的内容,以便指向 float 的指针与赋值兼容。

不过,请仔细检查,以确保 eepromread() 按您期望的顺序提供字节。它们应该如此,因为 IEEE754 独立于字节排序,但隐藏在嵌入式 C 库中的“巧妙增强”的数量可以写满一本相当大的书。

关于c - 读回 float ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22605366/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com