C# 如何使用逻辑将浮点转换为字节[]

C# 如何使用逻辑将浮点转换为字节[],c#,arrays,floating-point,C#,Arrays,Floating Point,除了使用内置方法外,我还需要将float数字转换为byte[] 位转换器.GetBytes。我想用一些逻辑来实现这一点 谢谢。从技术上讲,您可以尝试不安全,以便通过字节*指针扫描字节s: public static byte[] GetFloatBytes(float value) { byte[] result = new byte[sizeof(float)]; unsafe { // Let's treat a float as an array of bytes

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


谢谢。

从技术上讲,您可以尝试
不安全
,以便通过
字节*
指针扫描
字节
s:

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;
}

但是,更好的做法是将指针留在
位转换器
上,只需调用
位转换器.GetBytes()

从技术上讲,您可以尝试
不安全的
,以便通过
字节*
指针扫描
字节
s:

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;
}

但是,更好的做法是将指针留在
BitConverter
,只需调用
BitConverter.GetBytes()

GetBytes有什么问题?你想要不同的输出,还是你只是想复制它?我们可以假设小端或大端,还是我们需要尝试确定它?什么逻辑?浮点是幕后的一个字节数组,因此根本不清楚您想要的是什么不同。没有实际理由不使用
GetBytes
。它更有可能是正确的,并且具有良好的性能。下一个阅读您代码的人将立即理解
GetBytes
的功能;然而,他们将很难弄清楚您的自定义转换器的功能。编写自己版本的标准函数是
GetBytes
的主要问题?你想要不同的输出,还是你只是想复制它?我们可以假设小端或大端,还是我们需要尝试确定它?什么逻辑?浮点是幕后的一个字节数组,因此根本不清楚您想要的是什么不同。没有实际理由不使用
GetBytes
。它更有可能是正确的,并且具有良好的性能。下一个阅读您代码的人将立即理解
GetBytes
的功能;然而,他们将很难弄清楚您的自定义转换器的功能。编写自己版本的标准函数是我希望用设备描述语言实现该逻辑的一个主要部分,它不构成指针的实现。我们不能避免使用指针来实现它吗?我想用设备描述语言来实现这个逻辑,它不构成指针的实现。我们不能避免使用指针来实现它吗?