Convertir en binario a Hex y Decimal.

Iniciado por Meta, 23 Agosto 2014, 14:27 PM

0 Miembros y 2 Visitantes están viendo este tema.

Meta

Hola:

Cada botón valor1 al 3 cambia los bits que deseo del texbot Bin. Mi idea es conseguir leer esos bit para hacer el cambio.


Sólo debo cambiar un dígito o caracter, que ya funciona.

Código (csharp) [Seleccionar]
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Sustituir_letra
{
   public partial class Form1 : Form
   {
       public Form1()
       {
           InitializeComponent();
       }
       const string Binario_Restaurar = "B00000, B00000, B00000, B00000, B00000, B00000, B00000, B00000";

       public static string Sustituir(string cadenaOrignal, int posicion, int longitud, string sustituto)
       {
           return cadenaOrignal.Substring(0, posicion)
              + sustituto
              + cadenaOrignal.Substring(posicion + longitud);
       }

       private void button_Restaurar_Click(object sender, EventArgs e)
       {
           textBox_Bin.Text = Binario_Restaurar;
       }

       private void button_Cambiar_Letra1_Click(object sender, EventArgs e)
       {
           textBox_Bin.Text = Sustituir(textBox_Bin.Text, 12, 1, "1");
           textBox_Bin.Text = Sustituir(textBox_Bin.Text, 27, 1, "0");
           textBox_Bin.Text = Sustituir(textBox_Bin.Text, 28, 1, "0");
       }

       private void button_Cambiar_Letra2_Click(object sender, EventArgs e)
       {
           textBox_Bin.Text = Sustituir(textBox_Bin.Text, 2, 1, "1");
           textBox_Bin.Text = Sustituir(textBox_Bin.Text, 3, 1, "1");
           textBox_Bin.Text = Sustituir(textBox_Bin.Text, 4, 1, "1");
           textBox_Bin.Text = Sustituir(textBox_Bin.Text, 5, 1, "1");
       }

       private void button_Cambiar_Letra3_Click(object sender, EventArgs e)
       {
           textBox_Bin.Text = Sustituir(textBox_Bin.Text, 3, 1, "0");
           textBox_Bin.Text = Sustituir(textBox_Bin.Text, 4, 1, "0");
           textBox_Bin.Text = Sustituir(textBox_Bin.Text, 26, 1, "1");
           textBox_Bin.Text = Sustituir(textBox_Bin.Text, 27, 1, "1");
           textBox_Bin.Text = Sustituir(textBox_Bin.Text, 28, 1, "1");
           textBox_Bin.Text = Sustituir(textBox_Bin.Text, 29, 1, "1");
       }
   }
}


Como se puede ver en el textbox en Bin en la imagen de arriba. Se muestra estos valores.

B00000, B00000, B00000, B00000, B00000, B00000, B00000


Quiero transformar estos valores binarios en Dec y Hex.

Dec sería: 0, 0, 0, 0, 0, 0, 0
En Hex sería: 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00

Desde el momento que se modifique el valor del Bin, automáticamente debe cambiar también el Dec y Hex. Tengo que lograr de alguna manera que lea los estados dentro del TextBox que están en binario que son de 5 bits cada uno, luego transformar esos binariso a Dec y Hex para mostrarlos en los otros textbox.

No me importa de alguna manera leer cada byte de 5 bits por decirlo de alguna manera que esté dentro del textbox y guardarlo en cada variable, luego hacemos la conversión de binario a Dec y a Hex.

¿Alguna idea?

Saludo.
Tutoriales Electrónica y PIC: http://electronica-pic.blogspot.com/

Eleкtro

Cita de: Meta en 23 Agosto 2014, 14:27 PM
Quiero transformar estos valores binarios en Dec y Hex.

Código (vbnet) [Seleccionar]
' bin
Dim binStr As String = String.Format("B{0}", "00000")

' bin a hex
Dim hexStr As String = String.Format("0x{0}", Convert.ToString(Convert.ToInt32(binStr.Replace("B"c, String.Empty), 2I), 16I))

' hex a int32
Dim decVal As String = Convert.ToInt32(hexStr, 16I)


Code Converter | Provided by Telerik








Meta

Gracias.

Código (csharp) [Seleccionar]

// bin

{
string binStr = string.Format("B{0}", "00000");

// bin a hex
string hexStr = string.Format("0x{0}", Convert.ToString(Convert.ToInt32(binStr.Replace('B', string.Empty), 2), 16));

// hex a int32
string decVal = Convert.ToInt32(hexStr, 16);
}


Hay otro enlace también y es bueno saberlo.
http://www.developerfusion.com/tools/convert/vb-to-csharp/

Voy a hechar un ojo al código y luego les cuento si me ha funcionado.
Tutoriales Electrónica y PIC: http://electronica-pic.blogspot.com/

Meta

Gracias, me funciona, lo hice a mi manera.

Código (csharp) [Seleccionar]
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Sustituir_letra
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        const string Binario_Restaurar = "B00000, B00000, B00000, B00000, B00000, B00000, B00000, B00000";

        public static string Sustituir(string cadenaOrignal, int posicion, int longitud, string sustituto)
        {
            return cadenaOrignal.Substring(0, posicion)
               + sustituto
               + cadenaOrignal.Substring(posicion + longitud);
        }

        private void button_Restaurar_Click(object sender, EventArgs e)
        {
            textBox_Bin.Text = Binario_Restaurar;
        }

        private void button_Cambiar_Letra1_Click(object sender, EventArgs e)
        {
            Convertir();
        }

        public void Convertir()
        {
            string[] tokens = textBox_Bin.Text.Split(',');
            var numbers = tokens.Select(x => Convert.ToUInt16(x.Trim().Substring(1), 2)).ToList();
            textBox_Hex.Text = string.Join(", ", numbers.Select(x => "0x" + x.ToString("X2")));
            textBox_Dec.Text = string.Join(", ", numbers.Select(x => x.ToString("00")));
        }

        private void button_Bit_Click(object sender, EventArgs e)
        {
            textBox_Bin.Text = Sustituir(textBox_Bin.Text, 12, 1, "1");
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            Convertir();
        }
    }
Tutoriales Electrónica y PIC: http://electronica-pic.blogspot.com/