Test Foro de elhacker.net SMF 2.1

Programación => Programación General => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: Meta en 23 Agosto 2014, 14:27 PM

Título: Convertir en binario a Hex y Decimal.
Publicado por: Meta en 23 Agosto 2014, 14:27 PM
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.
(http://social.msdn.microsoft.com/Forums/getfile/514698)

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.
Título: Re: Convertir en binario a Hex y Decimal.
Publicado por: Eleкtro en 23 Agosto 2014, 16:23 PM
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 (http://converter.telerik.com/)
Título: Re: Convertir en binario a Hex y Decimal.
Publicado por: Meta en 23 Agosto 2014, 20:15 PM
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.
Título: Re: Convertir en binario a Hex y Decimal.
Publicado por: Meta en 24 Agosto 2014, 19:46 PM
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();
        }
    }