How to convert a string in ascii to binary in C #?

A back (first year of high school), I asked for a really good C ++ programmer who was a junior to create a simple application for converting strings to binary. He gave me the following code example:

void ToBinary(char* str) { char* tempstr; int k = 0; tempstr = new char[90]; while (str[k] != '\0') { itoa((int)str[k], tempstr, 2); cout << "\n" << tempstr; k++; } delete[] tempstr; } 

So, I think my question is how to get the equivalent of the itoa function in C #? Or, if not, how can I achieve the same effect?

+6
c ++ c # binary
source share
5 answers

This is very easy to do with C #.

 var str = "Hello world"; With LINQ foreach (string letter in str.Select(c => Convert.ToString(c, 2))) { Console.WriteLine(letter); } Pre-LINQ foreach (char letter in str.ToCharArray()) { Console.WriteLine(Convert.ToString(letter, 2)); } 
+10
source share

Use the ASCIIEncoding class and call GetBytes the line feed.

+2
source share

It is not clear what you want, but here is what I think you want:

 return Convert.ToString(int.Parse(str), 2); // "5" --> "101" 

This is not what C ++ code does. For this, I suggest:

 string[] binaryDigits = str.Select(c => Convert.ToString(c, 2)); foreach(string s in binaryDigits) Console.WriteLine(s); 
+2
source share

Thanks, that's great !! I used it to encode query strings ...

 protected void Page_Load(object sender, EventArgs e) { string page = ""; int counter = 0; foreach (string s in Request.QueryString.AllKeys) { if (s != Request.QueryString.Keys[0]) { page += s; page += "=" + BinaryCodec.encode(Request.QueryString[counter]); } else { page += Request.QueryString[0]; } if (!page.Contains('?')) { page += "?"; } else { page += "&"; } counter++; } page = page.TrimEnd('?'); page = page.TrimEnd('&'); Response.Redirect(page); } public class BinaryCodec { public static string encode(string ascii) { if (ascii == null) { return null; } else { char[] arrChars = ascii.ToCharArray(); string binary = ""; string divider = "."; foreach (char ch in arrChars) { binary += Convert.ToString(Convert.ToInt32(ch), 2) + divider; } return binary; } } public static string decode(string binary) { if (binary == null) { return null; } else { try { string[] arrStrings = binary.Trim('.').Split('.'); string ascii = ""; foreach (string s in arrStrings) { ascii += Convert.ToChar(Convert.ToInt32(s, 2)); } return ascii; } catch (FormatException) { throw new FormatException("SECURITY ALERT! You cannot access a page by entering its URL."); } } } } 
+1
source share

Here's the extension function:

  public static string ToBinary(this string data, bool formatBits = false) { char[] buffer = new char[(((data.Length * 8) + (formatBits ? (data.Length - 1) : 0)))]; int index = 0; for (int i = 0; i < data.Length; i++) { string binary = Convert.ToString(data[i], 2).PadLeft(8, '0'); for (int j = 0; j < 8; j++) { buffer[index] = binary[j]; index++; } if (formatBits && i < (data.Length - 1)) { buffer[index] = ' '; index++; } } return new string(buffer); } 

You can use it like:

 Console.WriteLine("Testing".ToBinary()); 

which outputs:

 01010100011001010111001101110100011010010110111001100111 

and if you add “true” as a parameter, it will automatically split each binary sequence.

+1
source share

All Articles