проблема преобразования 4-байтового массива в float в C#
Я использую C# и считываю массив байтов с некоторого контроллера и преобразую их в свои типы. все значения (int,string) OK, кроме значений float. Значение, которое предполагается получить, равно 533174.1. но при чтении массива
byteArr[0]=2
byteArr[1]=73
byteArr[2]=98
byteArr[3]=43
получение некоторого значения тарабарщины.
Я использовал System.BitConverter.ToDouble(bytesArr,0)
и другие методы, но безуспешно.
пожалуйста помочь.
Спасибо,
Игаль.
2 ответов
ваши байты выходят word-swapped. Эта функция должна преобразовать ваш массив байтов в поплавки правильно:
static float ToFloat(byte[] input)
{
byte[] newArray = new[] { input[2], input[3], input[0], input[1] };
return BitConverter.ToSingle(newArray, 0);
}
ToFloat(new byte[]{2,73,98,43}) == 533174.1
- Как насчет endianess? Вы пробовали изменить порядок слов? В windows 533174.1 - 98, 43, 2, 73.
- 4 байта-это один (ToSingle), а не двойной.