2015-03-30 8 views
4

Я хочу преобразовать текст в двоичный файл и после этого попробовать преобразовать двоичный код в строковый текст. Как я могу преобразовать tobin в текст, если это уже строка?Binary to string/string to binary

private void iTalk_Button_12_Click(object sender, EventArgs e) 
    { 

     ambiance_RichTextBox2.Text = tobin(ambiance_RichTextBox1.Text); 

    } 
    public string tobin(string inp) 
    { 
     StringBuilder sb = new StringBuilder(); 
     foreach (char L in inp.ToCharArray()) 
     { 
      sb.Append(Convert.ToString(L, 2).PadLeft(8, '0')); 
     } 
     return sb.ToString(); 
    } 
+0

О, где часть, когда вы перебираете свою строку в двоичную? – MajkeloDev

+0

вы можете сослаться на эту ссылку http://www.fluxbytes.com/csharp/convert-string-to-binary-and-binary-to-string-in-c/. –

ответ

3
 private void iTalk_Button_12_Click(object sender, EventArgs e) 
     { 
      ambiance_RichTextBox2.Text = BinaryToString(ambiance_RichTextBox1.Text); 
      //use what u need: BinaryToString or StringToBinary. 
     } 

Преобразовать строку в двоичную:

 public static string StringToBinary(string data) 
     { 
      StringBuilder sb = new StringBuilder(); 

      foreach (char c in data.ToCharArray()) 
      { 
       sb.Append(Convert.ToString(c, 2).PadLeft(8, '0')); 
      } 
      return sb.ToString(); 
     } 

Convert Binary to String:

 public static string BinaryToString(string data) 
     { 
      List<Byte> byteList = new List<Byte>(); 

      for (int i = 0; i < data.Length; i += 8) 
      { 
       byteList.Add(Convert.ToByte(data.Substring(i, 8), 2)); 
      } 

      return Encoding.ASCII.GetString(byteList.ToArray()); 
     } 

Удачи вам!

1

Вы можете использовать, как это,

public static string BinaryToString(string data) 
{ 
List<Byte> byteList = new List<Byte>(); 

for (int i = 0; i < data.Length; i += 8) 
{ 
byteList.Add(Convert.ToByte(data.Substring(i, 8), 2)); 
} 

return Encoding.ASCII.GetString(byteList.ToArray()); 
} 
1

Чтобы преобразовать строку в двоичный

string s = "hai"; 

byte []arr = System.Text.Encoding.ASCII.GetBytes(s); 

Для преобразования двоичного в строку

byte[] arr ; 

string s = Encoding.ASCII.GetString(arr); 
+2

Как я могу отобразить байт [] arr в моем richTextBox? Это - ambiance_RichTextBox2.Text = arr.ToString(); дает мне только сообщение System.Byte []. – Misa

+0

строка s = "hai"; byte [] arr = System.Text.Encoding.ASCII.GetBytes (s); richTextBox1.Text = Encoding.UTF8.GetString (arr); –

1

Curre вы преобразовываете символ (который может быть представлен как число) в его двоичное представление (это число является номером ASCII). Но если вы хотите преобразовать строку в двоичный код, вы должны использовать кодировку. Кодировка определяет, как текст преобразуется в двоичный.

Например:

static void Main(string[] args) 
{ 
    string input = "This is an example text."; 

    Console.WriteLine(input); 
    string asBin = ToBinary(input); 
    Console.WriteLine(asBin); 
    string asText = ToText(asBin); 
    Console.WriteLine(asText); 
} 

static string ToBinary(string input, System.Text.Encoding encoding = null) 
{ 
    if (encoding == null) 
     encoding = System.Text.Encoding.UTF8; 

    var builder = new System.Text.StringBuilder(); 
    var bytes = encoding.GetBytes(input); // Convert the text to bytes using the encoding 

    foreach (var b in bytes) 
     builder.Append(Convert.ToString(b, 2).PadLeft(8, '0')); //Convert the byte to its binary representation 

    return builder.ToString(); 
} 

static string ToText(string bytes, System.Text.Encoding encoding = null) 
{ 
    if (encoding == null) 
     encoding = System.Text.Encoding.UTF8; 

    var byteCount = 8; 
    var byteArray = new byte[bytes.Length/8]; // An array for the bytes 
    for (int i = 0; i < bytes.Length/byteCount; i++) 
    { 
     var subBytes = bytes.Substring(i * byteCount, byteCount); // Get a subpart of 8 bits 
     var b = Convert.ToByte(subBytes.TrimStart('0'), 2); // Convert the subpart to a byte 
     byteArray[i] = b; // Add the byte to the array 
    } 

    return encoding.GetString(byteArray); // Convert the array to text using the right encoding. 
} 

Теперь, если вы хотите использовать кодировку ASCII, вы можете вызывать функции следующим образом:

Console.WriteLine(input); 
string asBin = ToBinary(input, System.Text.Encoding.ASCII); 
Console.WriteLine(asBin); 
string asText = ToText(asBin, System.Text.Encoding.ASCII); 
Console.WriteLine(asText);