C#:将ushort转换为float
发布时间:2020-12-15 18:13:24 所属栏目:百科 来源:网络整理
导读:从我正在使用的图书馆我收到了一系列的ushort. 我想在float数组中转换它们:第一个ushort表示第一个float的16个MSB,第二个ushort是第一个float的16个LSB,依此类推. 我尝试使用类似下面的内容,但是值被转换为整数的值,而不是原始位: ushort[] buffer = { 0xB
从我正在使用的图书馆我收到了一系列的ushort.
我想在float数组中转换它们:第一个ushort表示第一个float的16个MSB,第二个ushort是第一个float的16个LSB,依此类推. 我尝试使用类似下面的内容,但是值被转换为整数的值,而不是原始位: ushort[] buffer = { 0xBF80,0x0000 }; float f = (uint)buffer[0] << 16 | buffer[1]; // expected result => f == -1 (0xBF800000) // effective result => f == 3.21283686E+9 (0x4F3F8000) 有什么建议吗? 解决方法
看看
System.BitConverter课程.
特别是,ToSingle方法采用一系列字节并将它们转换为浮点数. ushort[] buffer = {0xBF80,0x0000}; byte[] bytes = new byte[4]; bytes[0] = (byte)(buffer[1] & 0xFF); bytes[1] = (byte)(buffer[1] >> 8); bytes[2] = (byte)(buffer[0] & 0xFF); bytes[3] = (byte)(buffer[0] >> 8); float value = BitConverter.ToSingle( bytes,0 ); 编辑在这个例子中,我已经颠倒了MSB / LSB顺序..现在它是正确的 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |