我想知道是否可以使用联合体从接收的字符数组中获取浮点数。假设我定义了以下结构体:
typedef union {
float f;
char c[4];
} my_unionFloat_t;
如果我收到一个编码为浮点数的字符数组,格式如下(数字是虚构的):
data[4] = {32,45,56,88};
我可以这样做吗?
my_unionFloat_t c2f;
c2f.c[0] = data[0];
c2f.c[1] = data[1];
c2f.c[2] = data[2];
c2f.c[3] = data[3];
float result = c2f.f;
memcpy(&the_float,the_string_data,sizeof(float))
可以实现同样的效果。 - Jean-François Fabrechar
数组。您应该确保使用unsigned char
(而不是尝试初始化4个元素的5个元素数组)。 - Weather Vanechar c[sizeof(float)];
。顺便说一句,最好使用unsigned char
- 减少复杂性。 - chux - Reinstate Monicachar c[sizeof(float)]
?关于在同一定义中也使用unsigned char
,是这个意思吗? - ndarknesstypedef union { float f; unsigned char uc[sizeof (float)]; } my_unionFloat_t;
这在 C 中是可以的。请注意有关其他 C++ 问题的注释链接。 - chux - Reinstate Monica