Я хочу преобразовать некоторые значения в little-endian. У меня нет проблем с преобразованием int в little-endian следующим образом
private string ConverToLittleendian(string value)
{
var reversedBytes = System.Net.IPAddress.NetworkToHostOrder(Convert.ToInt32(value));
var littleEndienSerialNumber = reversedBytes.ToString("x");
return littleEndienSerialNumber.PadLeft(8, '0').ToUpper();
}
, а для float я не могу дать значение float в NetworkHostOrder, потому что он ожидает целое число.
Так что я 'мы нашли следующий код
private string ConverToLittleendian(float value)
{
byte[] bytes = BitConverter.GetBytes(value);
Array.Reverse(bytes);
return BitConverter.ToString(bytes).Replace("-", "");
}
, так или иначе, это дает неправильное значение. Я проверил эти методы с 1234 (я знаю, что это не число с плавающей запятой, но в данном случае это должно было сработать)
Первый метод, который я получаю результат D2040000, и второй метод, который я получаю результат 449A4000
Я не знаю, почему это отличается. Я хотел бы быть уверен, что когда я конвертирую действительно плавающее значение в младший, мне нужно получить правильное значение.
где я делаю ошибку?