我想知道是否可以使用联合来从接收的char数组中获取浮点数。假设我已经定义了以下结构
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;
答案 0 :(得分:1)
在C ++中实现这一目标的最简单方法是使用reinterprete_cast
:
unsigned char data[4] = {32,45,56,88};
float f = reinterpret_cast<const float&>(data);
const unsigned char* ch = reinterpret_cast<const unsigned char*>(&f);
for(int i=0; i<4; ++i)
std::cout << +ch[i] << ' ';
cout << f << '\n';