Мне нужно преобразовать значение float
в шестнадцатеричную строку и обратно. Онлайн IEEE 754 Converter позволяет мне это сделать. Вот моя попытка осуществить преобразование:C# преобразование из float в hexstring через IEEE 754 и обратно в float
unsafe static void Main(string[] args)
{
float f = 0.0023984962F;
long l = *((long*)&f);
float r = *((float*)&l);
Console.WriteLine("{0} <-> {1:X} <-> {1:F1} <-> {2:F1}", f, l, r);
Console.ReadLine();
}
Мои вопросы:
С поплавком
0.0023984962
ожидаемый результат0x3B1D3017
, но мой код печатает0x22CB20C3B1D3017
. Что я делаю не так?Как сохранить выходные данные в переменной?
Хорошее напоминание, почему 'unsafe' действительно небезопасно. Вместо этого используйте BitConverter.GetBytes(). –