好。 我有一个浮点数组:
float Array[2];
我想将两个2字节的短整数写入这个数组的第一个地址,就像这两个:
short one = 100;
short two = 200;
如何在此处排列字节并将短1和短2写入地址Array [0]?
谢谢!
答案 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]
的地址相同。