如何使用逻辑将float转换为byte []

时间:2016-10-21 14:07:20

标签: c# arrays floating-point

除了使用内置方法之外,我还需要将float数字转换为byte[] BitConverter.GetBytes。我想通过使用一些逻辑来实现这一点。

谢谢。

1 个答案:

答案 0 :(得分:2)

从技术上讲,您可以尝试unsafe,以便通过byte指针扫描byte*

public static byte[] GetFloatBytes(float value) {
  byte[] result = new byte[sizeof(float)];

  unsafe {
    // Let's treat a float as an array of bytes
    byte* b = (byte*) &value;

    for (int i = 0; i < result.Length; ++i, ++b)
      result[i] = *b;
  }

  return result;
}

测试:

float x = (float) Math.PI;

// db 0f 49 40
Console.WriteLine(string.Join(" ", BitConverter.GetBytes(x).Select(b => b.ToString("x2"))));
// db 0f 49 40
Console.WriteLine(string.Join(" ", GetFloatBytes(x).Select(b => b.ToString("x2"))));

但是,更好的做法是将指针留给BitConverter,然后致电BitConverter.GetBytes()