Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* Source Code: Dalmiro Farinello
- * Convertidor de letras a binario SOLO DE A UNA LETRA NO PALABRAS, Y SOLO LAS LETRAS DEL ALFABETO EN minusculas y MAYUSCULAS!!!!
- * GRACIAS espero les guste, lo hice lo mas entendible posible!!!
- */
- 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 traducto
- {
- public partial class main : Form
- {
- char[] abc = new char[26], ABC = new char[26];// arrays donde se almacenaran el alfabeto minusculo y mayusculo
- string bin; // variable que contrendra la traduccion
- public main()
- {
- InitializeComponent();
- }
- private void main_Load(object sender, EventArgs e)
- {
- int i1 = 0, i2 = 0;// indice1, indice2
- for (int i = 65; i < 91; i++)// tomando en cuenta la tabla ascii se coloca i en 65 que es el numero de la A y 91 donde termina osea Z
- {
- ABC[i1] = Convert.ToChar(i);// se convierte cada numero en un nuevo caracter en cada posicion del array
- i1++;// aumentamos indice1
- }
- for (int i = 97; i <= 122; i++)// aca lo mismo pero esto es para las minisculas
- {
- abc[i2] = Convert.ToChar(i);// lo mismo que arriba..
- i2++;// aumentamos indice2
- }
- }
- private void passTobin_Click(object sender, EventArgs e)// si se hace click blablabla... no hace falta que el boton se llame asi
- {
- bool isInt; // esta variable sera true si un numero tiene decimales o no
- double ascii; // aca estaran los numeros ascii, y se almacenaran los resultados de las diviciones para podes saber si es 0 o 1
- if (textIn.TextLength > 0) // se verifica el largo de la caja donde se encuentra el texto...
- {
- for (int i = 0; i < 26; i++)// se usa la i para tener todo el abecedario
- {
- if (textIn.Text.Contains(ABC[i]))// si el textbox textIn contiene alguna letra mayusculas del array entrame al ciclo...
- {
- ascii = Convert.ToDouble(Encoding.ASCII.GetBytes(ABC[i].ToString())[0]) / 2; // como sabemos para saber cuando ay que poner 0 o 1 se divide el numero ascii y si tiene decimales va 1 sino 0.. en esta linea convertimos la letra a ASCII y la dividimos por 2.
- isInt = ascii % 1 == 0; // si la divicion tiene decimales true sino false
- if (!isInt)
- {
- bin += "1"; // a la variable bin se le da 1 al entrar a este ciclo..
- ascii = Math.Truncate(ascii); // si la divicion tiene decimales, se la redondea para tener un numero entert
- while (ascii > 0) // si todabia sigue sin ser 0 la variable ascii empezamos un ciclo while
- {
- ascii = ascii / 2; // de nuevo dividimos
- isInt = ascii % 1 == 0; // y si da decimales ya sabemos que pasa..
- if (!isInt)
- {
- bin += "1";// volvemos a asignar
- ascii = Math.Truncate(ascii); // volvemos a redondear
- if (ascii == 0)// si la variable ascii ya es 0
- {
- textOut.Text = Invertir(bin); // mostramos el texto en el textbox textOut y la cadena la invertimos ya que la cadena esta dada vuelta, para entender vallan a la funcion Invertir()
- bin = ""; // reseteamos bin
- break; //paramos ciclo
- }
- else
- {
- continue;// sino continua
- }
- }
- else
- {
- bin += "0";// desde aca es lo mismo pero cuando no tiene decimales osea asignamos 0.
- ascii = Math.Truncate(ascii);
- if (ascii == 0)
- {
- textOut.Text = Invertir(bin);
- bin = "";
- break;
- }
- else
- {
- continue;
- }
- }
- }
- }
- else
- {
- bin += "0";
- ascii = Math.Truncate(ascii);
- while (ascii > 0)
- {
- ascii = ascii / 2;
- isInt = ascii % 1 == 0;
- if (!isInt)
- {
- bin += "1";
- ascii = Math.Truncate(ascii);
- if (ascii == 0)
- {
- textOut.Text = Invertir(bin);
- bin = "";
- break;
- }
- else
- {
- continue;
- }
- }
- else
- {
- bin += "0";
- ascii = Math.Truncate(ascii);
- if (ascii == 0)
- {
- textOut.Text = Invertir(bin);
- bin = "";
- break;
- }
- else
- {
- continue;
- }
- }
- }
- }
- }
- else if (textIn.Text.Contains(abc[i])) // este es el mismo codigo de antes nada mas que con las letras minusculas
- {
- ascii = Convert.ToDouble(Encoding.ASCII.GetBytes(abc[i].ToString())[0]) / 2;
- isInt = ascii % 1 == 0;
- if (!isInt)
- {
- bin += "1";
- ascii = Math.Truncate(ascii);
- while (ascii > 0)
- {
- ascii = ascii / 2;
- isInt = ascii % 1 == 0;
- if (!isInt)
- {
- bin += "1";
- ascii = Math.Truncate(ascii);
- if (ascii == 0)
- {
- textOut.Text = Invertir(bin);
- bin = "";
- break;
- }
- else
- {
- continue;
- }
- }
- else
- {
- bin += "0";
- ascii = Math.Truncate(ascii);
- if (ascii == 0)
- {
- textOut.Text = Invertir(bin);
- bin = "";
- break;
- }
- else
- {
- continue;
- }
- }
- }
- }
- else
- {
- bin += "0";
- ascii = Math.Truncate(ascii);
- while (ascii > 0)
- {
- ascii = ascii / 2;
- isInt = ascii % 1 == 0;
- if (!isInt)
- {
- bin += "1";
- ascii = Math.Truncate(ascii);
- if (ascii == 0)
- {
- textOut.Text = Invertir(bin);
- bin = "";
- break;
- }
- else
- {
- continue;
- }
- }
- else
- {
- bin += "0";
- ascii = Math.Truncate(ascii);
- if (ascii == 0)
- {
- textOut.Text = Invertir(bin);
- bin = "";
- break;
- }
- else
- {
- continue;
- }
- }
- }
- }
- }
- }
- }
- }
- public string Invertir(string s)
- {
- string aux = "";
- //Recorremos el string en orden inverso
- for (int i = s.Length - 1; i >= 0; i--) // se recorre la cadena y se invierte
- {
- aux += s[i];//se almacena en la nueva variable
- }
- if (aux.Length == 7)// si la cadena tiene 7 caracteres
- {
- aux = "0" + aux; // agrega un 0
- }
- else if (aux.Length == 6)// con 8 agregame 2...
- {
- aux = "00" + aux;
- }
- //retornamos la nueva cadena
- return aux;
- }
- }
- }
- // adios amigos espero les alla gustado!!!
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement