我想把一个浮点数转换成4字节的字符数组,比如2.45。因此,2.45应该看起来像这个'@' 'FS' 'Ì' 'Í',它是2.45 = 01000000 00011100 11001100 11001101的二进制ieee表示
我已经解决了这个问题,但它的复杂性很差。你有什么好主意吗?
谢谢你的好答案。
你能告诉我从char数组返回到浮点数的方法吗?
发布于 2013-08-16 18:20:55
有几种方法可以做到这一点,包括以下两种:
float f= 2.45;char *s = (char *) &f;
请注意,这样做无论如何都不安全,而且“string”后面没有字符串结束符。
union:联合u{ float f;char ssizeof float;};联合u foo;foo.f = 2.45;
现在可以访问char数组来获取字节值。还要注意,像第一种选择一样,没有字符串终止符。
发布于 2013-08-16 18:17:50
只需使用memcpy:
#include <string.h>
float f = 2.45f;
char a[sizeof(float)];
memcpy(a, &f, sizeof(float));如果您需要相反的字节顺序,那么在a中反转字节是一件微不足道的事情,例如
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;
}https://stackoverflow.com/questions/18270974
复制相似问题