请检查此代码
float f = BitConverter.ToSingle(new byte[] { 0xBF, 0x04, 0x8E, 0xFF }, 0);
byte[] b = BitConverter.GetBytes(f);
这会产生一个奇怪的结果。 b 将是 { 0xBF, 0x04, 0xCE, 0xFF }
我猜是因为 f 的值为 NaN。 我问这个问题的原因是因为我使用 Marsal 将字节流转换为包含 float 的结构,我交换字节序
事情是当我到达现场时已经搞砸了(就像上面的例子)
有什么想法吗?
谢谢!
最佳答案
由于您的问题似乎是字节序的,我想知道是否检查 NaN 并反转顺序并设置一个 bool 值以在必要时反转它,是否会有所帮助:
byte[] input = { 0xBF, 0x04, 0x8E, 0xFF };
bool reversed = false;
float f = BitConverter.ToSingle(input, 0);
if (float.IsNaN(f))
{
reversed = true;
f = BitConverter.ToSingle(input.Reverse().ToArray(), 0);
}
byte[] b = BitConverter.GetBytes(f);
if (reversed)
b = b.Reverse().ToArray();
关于c# - 将 byte[] 转换为数组问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20260942/