У меня есть это значение:
double headingAngle = 135.34375;
Я хотел бы преобразовать его в HEX и распечатать HEX на консоли. Я уже конвертировал строку и int в их соответствующие значения HEX, но double кажется более хитрым. Может ли кто-нибудь указать мне правильное направление?
Ну я погуглил минуту-другую и согласно это вот довольно изящное решение
double d = 12.09;
Console.WriteLine("Double value: " + d.ToString());
byte[] bytes = BitConverter.GetBytes(d);
Console.WriteLine("Byte array value:");
Console.WriteLine(BitConverter.ToString(bytes));
Можно преобразовать число с основанием 10 в число 16, непрерывно умножая дробь на 16, удаляя «целое» число и повторяя с остатком.
Итак, чтобы преобразовать десятичное число 0,1 в шестнадцатеричное число,
0.1 * 16
= 1.6
Итак, 1 становится первым шестнадцатеричным значением. Продолжайте с оставшимися 0,6
0.6 * 16 = 9.6
Таким образом, 9 становится вторым шестнадцатеричным значением. Продолжаем с оставшимися 0.6
0.6 * 16 = 9.6
и т.д.
Итак, 0,1
Десятичное = 0,19999
.. повторяющееся шестнадцатеричное число
По памяти это работает для любой системы счисления. Очевидно, что в шестнадцатеричном формате целое значение 10
будет равно A и т. д.