将Float分成两个短裤

时间:2015-01-13 15:41:02

标签: c

好。 我有一个浮点数组:

float Array[2];

我想将两个2字节的短整数写入这个数组的第一个地址,就像这两个:

short one = 100;
short two = 200;

如何在此处排列字节并将短1和短2写入地址Array [0]?

谢谢!

1 个答案:

答案 0 :(得分:5)

这很危险。 C中的short保证至少 16位,因此它可能比您想象的要大。

float可能是32位,你可能会限制你的解决方案。 (使用基于sizeof(float) == 4的静态断言)。

使用int16_t代替short会更安全:这是16位签名类型,自C99以来一直是标准。

这个联盟是安全的:

union 
{
    int16_t arr[2];
    float f;
};

标准保证(i)arr将是连续的,(ii)f的地址与arr[0]的地址相同。