如何在C#中将字符串转换为ascii为二进制?

不久前(高中一年级)我问了一个非常优秀的C ++程序员,他是一个初级的人,可以创建一个简单的应用程序来将字符串转换为二进制文件。 他给了我以下代码示例:

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; } 

所以我想我的问题是如何在C#中获得等效的itoa函数? 或者,如果没有,我怎么能达到同样的效果?

使用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)); } 

使用ASCIIEncoding类并调用GetBytes传递字符串。

目前尚不清楚你想要什么,但这是我认为你想要的:

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

这不是C ++代码的作用。 为此,我建议:

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

谢谢,这太棒了!! 我用它来编码查询字符串……

 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."); } } } } 

这是一个扩展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); } 

您可以像以下一样使用它:

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

哪个输出:

 01010100011001010111001101110100011010010110111001100111 

如果添加'true'作为参数,它将自动分隔每个二进制序列。