以其他格式浮动到字节数组

时间:2018-02-07 12:55:37

标签: c# arrays bitconverter

我使用Bitconverter从float转换为Byte数组。

byte[] ValueByteArray = BitConverter.GetBytes(Value);

现在我正在用另一个应用程序评估我的应用程序,目标当然是我的输出完全相同。问题是,它不是。

我100%确定测试结果是正确的,而且我的价值是“错误的”'或以其他格式。因为在连接到参考应用程序的客户端中,值为5.5,而我的是6.09414613e-039

我的申请:

  • 测试值: 5,5
  • 字节数组值: 0.0.5C.42
  • 客户申请表中的值: 6.09414613e-039

参考申请

  • 测试值: 5,5
  • 字节数组值: 0.0.B0.40
  • 客户端应用程序中的值: 5,5

1 个答案:

答案 0 :(得分:3)

您的参考申请是正确的; 0x00005C42是55,而不是5.5;这可能就像逗号vs period一样简单,就像你的一些解析代码中的十进制说明符一样。 6.09414613e-039似乎是字节顺序中的一个一个错误(参见底行)

示例:

float value = 5.5F;
var bytes = BitConverter.GetBytes(value);
Console.WriteLine(BitConverter.ToString(bytes)); // 00-00-B0-40

float value = 55;
var bytes = BitConverter.GetBytes(value);
Console.WriteLine(BitConverter.ToString(bytes)); // 00-00-5C-42

float value = 6.09414613e-039F;
var bytes = BitConverter.GetBytes(value);
Console.WriteLine(BitConverter.ToString(bytes)); // 00-5C-42-00