Я читаю некоторые данные через сокет.Интегральные типы данных не представляют проблем, методы System.BitConverter правильно обрабатывают преобразование.(Так что, я думаю, нет проблем с Endian, о которых стоит беспокоиться?)
Однако BitConverter.ToDouble не работает с частями данных с плавающей запятой ... спецификация источника является немного низким уровнем дляя, но говорю о двоичном представлении с фиксированной точкой с положительным смещением байта в более значимом направлении и отрицательным смещением байта в менее значимом направлении.
Большая часть исследований, которые я провел, была направлена на C ++ илиполная библиотека с фиксированной запятой, обрабатывающая синусы и косинусы, что кажется излишним для этой проблемы.Может ли кто-нибудь помочь мне с функцией C # для получения числа с плавающей запятой из 8 байтов массива байтов с, скажем, смещением -3 байта?
Более подробная информация о формате по запросу:
подписано численное значение данных с фиксированной точкой должно быть представлено в двоичном дополнительном коде, комплемент notation.For данных с фиксированной точкой, значение каждого параметра данных должно быть определено по отношению к опорному байта.Эталонный байт определяет восьмибитное поле с единицей измерения в позиции LSB.Значение младшего разряда эталонного байта равно ОДНО.Байты сдвига должны быть определены целым числом, указывающего положение младшего байта элемента данных относительно опорного байта.MSB элемента данных представляет знаковый бит.Битовые позиции между MSB абсолютного значения параметра и MSB старшего байта должны быть равны значению знакового бита.
Данные с плавающей запятой должны представляться в виде двоичного числа с плавающей запятой в соответствии сIEEE ANSI / IEEE Std 754-2008.(Это предложение из другого раздела, который может быть красной сельдью).