Как перевести из 10-ричной в 16-ричную СС - C#
Формулировка задачи:
Как не пробовал, не получается(
Решение задачи: «Как перевести из 10-ричной в 16-ричную СС»
textual
Листинг программы
class MyConverter { private double result; public MyConverter() { } public double isInteger(double digit) { bool positive = true; string buff = ""; if (digit == 0) return 0; if (digit < 0) positive = false; while (Math.Abs(digit) >= 2) { buff += Convert.ToString(Math.Abs(digit) % 2); digit = Math.Truncate(Math.Abs(digit) / 2); } buff += "1"; char[] arr = buff.ToCharArray(); Array.Reverse(arr); buff = new string(arr); result = Convert.ToDouble(buff); if (positive) { return result; } else return -result; } private double isDouble(double digit) { double real = 0; double fractional = 0; string buff = ""; int index = 0; bool positive = true; if (digit < 0) { positive = false; digit = Math.Abs(digit); } real = (int)digit; fractional = digit - real; double start = fractional; while (Math.Abs(fractional) > 0) { fractional = fractional * 2; buff += Convert.ToString((int)fractional); fractional = fractional - (int)fractional; if (fractional >= start && fractional <= start + 0.005) index++; if (index > 0) break; } string _else = ""; _else += Convert.ToString(isInteger(real)) + "," + buff; if (!positive) { return -1 * Convert.ToDouble(_else); } else { return Convert.ToDouble(_else); } } public double DecimalToBinarySystem(double digit) { if (digit % 1 != 0 ) digit = (int) digit; if (digit < 0) digit *= -1; return isInteger(digit); } public double BinaryToDecimalSystem(double digit) { if (digit % 1 != 0) digit = (int)digit; if (digit < 0) digit *= -1; double result = 0; char[] arr = new char[digit.ToString().Length]; arr = digit.ToString().ToCharArray(); int pow = arr.Length - 1; for (int i = 0; i < arr.Length; i++) { result += Convert.ToDouble(arr[i].ToString()) * Math.Pow(2, pow); pow--; } return result; } public string DecimalToHexadecimalSystem(double digit) { bool positive = true; if (digit < 0) { digit = Math.Abs(digit); positive = false; } string _result = ""; double remainder = 0; double real = 0; real = (int)digit; if (real >= 0 && real <= 9) { _result += real.ToString(); return _result; } if (real >= 10 && real <= 16) { switch (real.ToString()) { case "10": { _result += "A"; return _result; } case "11": { _result += "B"; return _result; } case "12": { _result += "C"; return _result; } case "13": { _result += "D"; return _result; } case "14": { _result += "E"; return _result; } case "15": { _result += "F"; return _result; } case "16": { _result += "10"; return _result; } } } while (real > 0) { remainder = real % 16; if (remainder >= 0 && remainder <= 9) _result += remainder.ToString(); else if (remainder >= 10 && remainder <= 16) { switch (remainder.ToString()) { case "10": { _result += "A"; break; } case "11": { _result += "B"; break; } case "12": { _result += "C"; break; } case "13": { _result += "D"; break; } case "14": { _result += "E"; break; } case "15": { _result += "F"; break; } case "16": { _result += "10"; break; } } } real = (real - remainder) / 16; } char[] arr = _result.ToCharArray(); Array.Reverse(arr); _result = new string(arr); if (!positive) { _result = "-" + _result; } return _result; } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д