Как перевести из 10-ричной в 16-ричную СС - C#

Формулировка задачи:

Как не пробовал, не получается(

Код к задаче: «Как перевести из 10-ричной в 16-ричную СС - C#»

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;
            }
        }
Эта работа вам не подошла?

Вы всегда можете заказать любую учебную работу у наших авторов от 20 руб.

13   голосов, оценка 4.231 из 5


СДЕЛАЙТЕ РЕПОСТ