Float to Byte array в другом формате
Я использую Bitconverter для преобразования из числа с плавающей точкой в массив байтов.
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 ответ
Ваша справочная заявка верна; 0x00005C42 - 55, а не 5,5; это может быть так же просто, как запятая против периода, как десятичный спецификатор в вашем коде синтаксического анализа. 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