Ищете решение для решения моей проблемы, я нашел только Hex, подписанный с преобразованием значения int, но не обратный случай.Как преобразовать двойное знаковое значение в значение с шестнадцатеричным значением
Я попытался это:
float grades = -32.33f ;
System.out.println("grades: "+grades);
double radians = Math.toRadians(grades);
System.out.println("rad: "+radians);
radians = radians * 100000000;
System.out.println("rad * 10^8: "+radians);
String hex = Double.toHexString(radians);
System.out.println("signed to hex: "+hex);
с выходом:
grados: -32.33
rad: -0.5642649791276998
rad * 10^8: -5.642649791276998E7
signed to hex: -0x1.ae8000f4d5a59p25
Но я ожидаю ПОЛУЧАЕТЕ:
FCA30001
В этом ответе Java negative int to hex and back fails я обнаружил, что Double.toHexString(radians);
дал я, как правило, не имеет значения, может быть, это и есть проблема. Есть идеи?
Заранее спасибо.
EDIT:
Я пытаюсь сделать обратную операцию:
- 1) FCA30001 подписанному ИНТ: -56426495,
- 2) -56426495 * 10^8 is -0.564264 radians,
- 3) Теперь преобразование радианов в классы составляет -32,33.
Возможный дубликат: http://stackoverflow.com/a/15073682/557153 – avgvstvs
Возможно, вы ищете 'Long.toHexString (Double.doubleToLongBits (радианы))'? – immibis
Почему вы ожидаете получить FCA30001? – immibis