Погуглив, я обнаружил, что не так много информации о том, как преобразовывать числа в шестнадцатеричные числа с плавающей запятой с одинарной точностью. Есть три четких шага: 1 Конвертировать всю двоичную часть. 2 Добавьте запятую и преобразуйте дробную часть в двоичную. 3 Поместите результат в научный отчет. 4 Передайте результат в 32-битный стандарт IEEE-754. Это приведет к двоичному коду. Затем превратить его в шестнадцатеричное. И все это облом, я поставил код в надежде, что он решит это для меня ;-) Приветствую.
private String Float2Hex(String value) {
String[] aux;
String number = "", mantissa = "", exponent = "";
Double div = 0;
int exp = 0;
aux = value.Split('.');
number = Convert.ToString(int.Parse(aux[0]), 2);
exp = number.Length - 1;
mantissa = number.Substring(1, number.Length - 1);
while ((aux.Length > 1) && (mantissa.Length < 23)) {
div = Double.Parse("0," + aux[1]) * 2;
aux = div.ToString().Split(',');
mantissa += aux[0];
}
while (mantissa.Length < 23) // Simple precision = 23 bits
mantissa += "0";
exponent = Convert.ToString(exp + 127, 2);
if (value.Substring(0, 1).Equals("-"))
number = "1" + exponent + mantissa;
else
number = "0" + exponent + mantissa;
return Bin2Hex(number);
}
Я использую следующую функцию Bin2Hex другого партнера: Двоичный в шестнадцатеричный /а>