【问题标题】:How can I convert four bytes of big endian binary data to IEEE floating point using C#?如何使用 C# 将四个字节的大端二进制数据转换为 IEEE 浮点数?
【发布时间】:2012-09-26 19:33:38
【问题描述】:

如何使用 C# 将四个字节的二进制数据(大端)转换为 IEEE 浮点值?

【问题讨论】:

  • 欢迎来到 Stack Overflow Haji - 当提出这样的问题时,我们需要了解您尝试过的内容、遇到的问题,如果可能的话,请查看相关代码。我们不会为您编写整个代码,但我们可以帮助解决具体问题。请添加我要求的详细信息 - 特别是,您究竟需要什么帮助?你被困在哪里了?
  • 我不明白为什么 OP 应该在这里显示“你尝试过什么”,问题是关于足够具体的细节。不过,对数据进行更多规范会很好。
  • 其实我想要完整的代码,或者想知道任何可以做同样的内置函数

标签: c# binary ieee-754


【解决方案1】:

一个简单的解决方案是反转传入的数组并将其提供给 .Net Framework 的BitConverter

byte[] reversed = data.Reverse().ToArray();
float value = BitConverter.ToSingle(reversed, 0);

对于使用大端值的成熟位转换器,请查看 Jon Skeet 和 Marc Gravell 的 MiscUtil library 中的 MiscUtil.Conversion.BigEndianBitConverter,然后使用 ToSingle(byte[] value, int startIndex)

byte[] data;
float value = BigEndianBitConverter.ToSingle(data, 0);

它支持的方法与.Net框架中BitConverter class的方法相同。可以在 MiscUtil 网站上找到源代码。

【讨论】:

  • 只是说;虽然我为该库做出了贡献,但其中大部分,包括 BigEndianBitConverter,完全是 Jon
  • 源代码可以从MiscUtil website下载。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-02
  • 1970-01-01
  • 2011-02-25
  • 2022-11-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多