Esempio n. 1
0
        public void DisplayNumber(object o)
        {
            try
            {
                double doubleValue     = Convert.ToDouble(o);
                float  floatValue      = Convert.ToSingle(o);
                bool   isFloatingPoint = (doubleValue - Math.Truncate(doubleValue)) != 0;
                var    buffer          = new StringBuilder();
                if (isFloatingPoint)
                {
                    byte[] singlebytes = BitConverter.GetBytes(floatValue);
                    Array.Reverse(singlebytes);

                    byte[] doublebytes = BitConverter.GetBytes(doubleValue);
                    Array.Reverse(doublebytes);

                    buffer.AppendFormat("IEEE 754 Double: {0}\r\n", NumberSystemConversion.ByteArrayToHex(doublebytes));
                    buffer.AppendFormat("IEEE 754 Single: {0}", NumberSystemConversion.ByteArrayToHex(singlebytes));
                    Text = buffer.ToString();
                    return;
                }
                else
                {
                    string bin, oct, hex;
                    var    integerNumber = Convert.ToInt64(doubleValue);
                    bin = NumberSystemConversion.ToSystem(integerNumber, 2);
                    oct = NumberSystemConversion.ToSystem(integerNumber, 8);
                    hex = NumberSystemConversion.ToSystem(integerNumber, 16);

                    int bits = bin.Length;
                    bin = NumberSystemConversion.FormatBin(bin);

                    buffer.AppendFormat("DEC: {0}\n", integerNumber);
                    buffer.AppendFormat("BIN: {0}\n", bin);
                    buffer.AppendFormat("OCT: {0}\n", oct);
                    buffer.AppendFormat("HEX: {0}\n", hex);
                    buffer.AppendFormat("-------------------------------------\n");
                    buffer.AppendFormat("Bits: {0}", bits);
                }
                Text = buffer.ToString();
            }
            catch (Exception ex)
            {
                Text = "Error displaying number in various systems";
                Debug.WriteLine(ex.Message);
            }
        }
        public bool Process(string input, out string output)
        {
            try
            {
                if (!Regex.IsMatch(input, PatternMatchRegex))
                {
                    throw new Exception("Pattern match error");
                }

                string[] tokens = input.Split(':');
                var      system = Convert.ToInt32(tokens[1].Replace("S", ""));
                output = NumberSystemConversion.FromSystem(tokens[0], system).ToString(new CultureInfo("en-US"));
                return(true);
            }
            catch (Exception)
            {
                output = input;
                return(false);
            }
        }