首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在C中将浮点数转换为4字节字符?

如何在C中将浮点数转换为4字节字符?
EN

Stack Overflow用户
提问于 2013-08-16 18:15:37
回答 2查看 37.4K关注 0票数 6

我想把一个浮点数转换成4字节的字符数组,比如2.45。因此,2.45应该看起来像这个'@' 'FS' 'Ì' 'Í',它是2.45 = 01000000 00011100 11001100 11001101的二进制ieee表示

我已经解决了这个问题,但它的复杂性很差。你有什么好主意吗?

谢谢你的好答案。

你能告诉我从char数组返回到浮点数的方法吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-08-16 18:20:55

有几种方法可以做到这一点,包括以下两种:

  1. 使用类型转换和指针:

float f= 2.45;char *s = (char *) &f;

请注意,这样做无论如何都不安全,而且“string”后面没有字符串结束符。

  • 使用union

联合u{ float f;char ssizeof float;};联合u foo;foo.f = 2.45;

现在可以访问char数组来获取字节值。还要注意,像第一种选择一样,没有字符串终止符。

票数 9
EN

Stack Overflow用户

发布于 2013-08-16 18:17:50

只需使用memcpy:

代码语言:javascript
复制
#include <string.h>

float f = 2.45f;
char a[sizeof(float)];

memcpy(a, &f, sizeof(float));

如果您需要相反的字节顺序,那么在a中反转字节是一件微不足道的事情,例如

代码语言:javascript
复制
int i, j;

for (i = 0, j = sizeof(float) - 1; i < j; ++i, --j)
{
    char temp = a[i];
    a[i] = a[j];
    a[j] = temp;
}
票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18270974

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档