从我正在使用的库中,我收到了一个数组ushort
。C#:将ushort转换为浮点数
我想将它们转换为float
阵列:第一ushort
表示第一float
和第二ushort
的16 MSB LSB是的第一float
16,依此类推。
我试着用类似于以下,但价值被铸造为整数的值,而不是原始位:
ushort[] buffer = { 0xBF80, 0x0000 };
float f = (uint)buffer[0] << 16 | buffer[1];
// expected result => f == -1 (0xBF800000)
// effective result => f == 3.21283686E+9 (0x4F3F8000)
什么建议吗?
固定大小数组的C#语法是'fixed ushort buffer [2];',我不确定它是否与'[FieldOffset]'结合使用。 您不能使用普通的C#数组,因为它会将指针转换为数组,而不是数组内容。 – Daniel 2012-02-03 14:56:05
@Daniel谢谢,我最近没有用C#编写程序。 – 2012-02-03 15:42:44