Ejemplo n.º 1
0
 private bool ParseNumber(out string parsed, string c)
 {
     if (c.StartsWith("Hx"))
     {
         parsed = Convert.ToInt64(c.Replace("Hx", ""), 16).ToString(CultureInfo.InvariantCulture);
         return(true);
     }
     else if (c.StartsWith("Ox"))
     {
         parsed = Convert.ToInt64(c.Replace("Ox", ""), 8).ToString(CultureInfo.InvariantCulture);
         return(true);
     }
     else if (c.StartsWith("Bx"))
     {
         parsed = Convert.ToInt64(c.Replace("Bx", ""), 2).ToString(CultureInfo.InvariantCulture);
         return(true);
     }
     else if (c.StartsWith("Rx"))
     {
         parsed = NumberSystemConversions.RomanToInt(c.Replace("Rx", "")).ToString(CultureInfo.InvariantCulture);
         return(true);
     }
     else
     {
         try
         {
             foreach (var item in _prefixes)
             {
                 if (c.EndsWith(item.Key))
                 {
                     string number = c.Replace(item.Key, "");
                     double n      = Convert.ToDouble(number);
                     n     *= item.Value;
                     parsed = n.ToString(CultureInfo.InvariantCulture);
                     return(true);
                 }
             }
             var num = 0.0d;
             if (double.TryParse(c, out num))
             {
                 parsed = num.ToString(CultureInfo.InvariantCulture);
                 return(true);
             }
             else
             {
                 parsed = c;
                 return(false);
             }
         }
         catch (Exception)
         {
             parsed = null;
             return(false);
         }
     }
 }
Ejemplo n.º 2
0
        public void DisplayNumber(object o)
        {
            if (Helpers.IsSpecialType(o))
            {
                Text = "Special types are not supported for conversion";
                return;
            }
            double d      = Convert.ToDouble(o);
            float  f      = Convert.ToSingle(o);
            bool   floats = (d - Math.Truncate(d)) != 0;
            var    buffer = new StringBuilder();

            if (floats)
            {
                byte[] singlebytes = BitConverter.GetBytes(f);
                Array.Reverse(singlebytes);

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

                buffer.AppendFormat("IEEE 754 Double: {0}\r\n", NumberSystemConversions.ByteArrayToHex(doublebytes));
                buffer.AppendFormat("IEEE 754 Single: {0}", NumberSystemConversions.ByteArrayToHex(singlebytes));
                Text = buffer.ToString();
                return;
            }
            else
            {
                string bin, oct, hex;
                var    bi = new BigInteger(d);
                bin = NumberSystemConversions.ToSystem(bi, 2);
                oct = NumberSystemConversions.ToSystem(bi, 8);
                hex = NumberSystemConversions.ToSystem(bi, 16);

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

                buffer.AppendFormat("DEC: {0}\n", bi);
                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();
        }
Ejemplo n.º 3
0
        private void ConvertIEEE754(string text)
        {
            try
            {
                var    buffer = new StringBuilder();
                float  single = Convert.ToSingle(text);
                double d      = Convert.ToDouble(text);

                byte[] singlebytes = BitConverter.GetBytes(single);
                Array.Reverse(singlebytes);

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

                string singlebin = NumberSystemConversions.ByteArrayToBin(singlebytes);
                string singlehex = NumberSystemConversions.ByteArrayToHex(singlebytes);
                string doublebin = NumberSystemConversions.ByteArrayToBin(doublebytes);
                string doublehex = NumberSystemConversions.ByteArrayToHex(doublebytes);
                buffer.AppendFormat("Hexadecimal single value:   {0}\n", singlehex);
                buffer.AppendFormat("Binary single value:        {0}\n", singlebin);
                buffer.AppendFormat("Sign:                       {0}\n", singlebin.Substring(0, 1));
                buffer.AppendFormat("Exponent:                   {0}\n", singlebin.Substring(1, 8));
                buffer.AppendFormat("Fraction:                   {0}\n", singlebin.Substring(8, 23));
                buffer.Append("--------------------------------------------------\n");
                buffer.AppendFormat("Hexadecimal double value:   {0}\n", doublehex);
                buffer.AppendFormat("Binary double value:        {0}\n", doublebin);
                buffer.AppendFormat("Sign:                       {0}\n", doublebin.Substring(0, 1));
                buffer.AppendFormat("Exponent:                   {0}\n", doublebin.Substring(1, 11));
                buffer.AppendFormat("Fraction:                   {0}\n", doublebin.Substring(11, 52));
                IEEE754Output.Text = buffer.ToString();
            }
            catch (Exception)
            {
                IEEE754Output.Text = "Input error";
            }
        }
Ejemplo n.º 4
0
        private void ConvertInt()
        {
            try
            {
                BigInteger input        = 0;
                var        input_radio  = InputSelector.Children.OfType <RadioButton>().FirstOrDefault(i => i.IsChecked.Value);
                var        output_radio = OutputSelector.Children.OfType <RadioButton>().FirstOrDefault(i => i.IsChecked.Value);
                switch (input_radio.Content.ToString())
                {
                case "Decimal":
                    input = Convert.ToInt64(InputNumber.Text, 10);
                    break;

                case "Binary":
                    input = Convert.ToInt64(InputNumber.Text, 2);
                    break;

                case "BCD":
                    input = NumberSystemConversions.BCDBinToDecimal(InputNumber.Text);
                    break;

                case "Octal":
                    input = Convert.ToInt64(InputNumber.Text, 8);
                    break;

                case "Hexa":
                    input = Convert.ToInt64(InputNumber.Text, 16);
                    break;

                case "Custom":
                    input = NumberSystemConversions.FromSystem(InputNumber.Text,
                                                               (int)Math.Round(SourceSystem.Value));
                    break;
                }
                switch (output_radio.Content.ToString())
                {
                case "Decimal":
                    OutputNumber.Text = NumberSystemConversions.ToSystem(input, 10);
                    break;

                case "Binary":
                    OutputNumber.Text = NumberSystemConversions.ToSystem(input, 2);
                    break;

                case "BCD":
                    OutputNumber.Text = NumberSystemConversions.DecimalToBCDBin((long)input);
                    break;

                case "Octal":
                    OutputNumber.Text = NumberSystemConversions.ToSystem(input, 8);
                    break;

                case "Hexa":
                    OutputNumber.Text = NumberSystemConversions.ToSystem(input, 16);
                    break;

                case "Custom":
                    OutputNumber.Text = NumberSystemConversions.ToSystem(input,
                                                                         (int)Math.Round(TargetSystem.Value));
                    break;
                }
            }
            catch (Exception)
            {
                if (OutputNumber != null)
                {
                    OutputNumber.Text = "Conversion Error";
                }
            }
        }