9

Hi i was able to convert a ASCII string to binary using a binarywriter .. as 10101011 . im required back to convert Binary ---> ASCII string .. any idea how to do it ?

Sudantha
  • 15,684
  • 43
  • 105
  • 161

5 Answers5

23

This should do the trick... or at least get you started...

public Byte[] GetBytesFromBinaryString(String binary)
{
  var list = new List<Byte>();

  for (int i = 0; i < binary.Length; i += 8)
  {
    String t = binary.Substring(i, 8);

    list.Add(Convert.ToByte(t, 2));
  }

  return list.ToArray();
}

Once the binary string has been converted to a byte array, finish off with

Encoding.ASCII.GetString(data);

So...

var data = GetBytesFromBinaryString("010000010100001001000011");
var text = Encoding.ASCII.GetString(data);
Chris Baxter
  • 16,083
  • 9
  • 51
  • 72
  • Thanks a Lot Coder.. Exactly what i needed and working awesomely ! .. i was trying whole day with a blackout and finally !! thanks a lot ! :D – Sudantha May 15 '11 at 14:11
  • @Sudantha: I have merged your two identical questions; you might want to re-accept this answer (it was accepted on the other question). – balpha May 15 '11 at 14:56
  • it works thank you. my code is 7 length so i only change 8 to 7. – matasoy Nov 05 '17 at 13:15
7

If you have ASCII charters only you could use Encoding.ASCII.GetBytes and Encoding.ASCII.GetString.

var text = "Test";
var bytes = Encoding.ASCII.GetBytes(text);
var newText = Encoding.ASCII.GetString(bytes);
Alex Aza
  • 76,499
  • 26
  • 155
  • 134
3

Here is complete code for your answer

FileStream iFile = new FileStream(@"c:\test\binary.dat",
FileMode.Open);

long lengthInBytes = iFile.Length;

BinaryReader bin = new BinaryReader(aFile);

byte[] byteArray = bin.ReadBytes((int)lengthInBytes);

System.Text.Encoding encEncoder = System.Text.ASCIIEncoding.ASCII;

string str = encEncoder.GetString(byteArray);
Amit
  • 21,570
  • 27
  • 74
  • 94
1

Take this as a simple example:

public void ByteToString()
{
   Byte[] arrByte = { 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0 };

   string x = Convert.ToBase64String(arrByte);
}

This linked answer has interesting details about this kind of conversion:

binary file to string

Community
  • 1
  • 1
Leniel Maccaferri
  • 100,159
  • 46
  • 371
  • 480
  • HI leniel im having a string how to convert it to `byte[]` i used `Encoding.ASCHII` .... but it gives a junk ~ – Sudantha May 15 '11 at 04:21
0

Sometimes instead of using the built in tools it's better to use "custom" code.. try this function:

public string BinaryToString(string binary)
{
    if (string.IsNullOrEmpty(binary))
        throw new ArgumentNullException("binary");

    if ((binary.Length % 8) != 0)
        throw new ArgumentException("Binary string invalid (must divide by 8)", "binary");

    StringBuilder builder = new StringBuilder();
    for (int i = 0; i < binary.Length; i += 8)
    {
        string section = binary.Substring(i, 8);
        int ascii = 0;
        try
        {
            ascii = Convert.ToInt32(section, 2);
        }
        catch
        {
            throw new ArgumentException("Binary string contains invalid section: " + section, "binary");
        }
        builder.Append((char)ascii);
    }
    return builder.ToString();
}

Tested with 010000010100001001000011 it returned ABC using the "raw" ASCII values.

Shadow The GPT Wizard
  • 66,030
  • 26
  • 140
  • 208