C# 二进制到相应ASCII字符串的转换

C# 二进制到相应ASCII字符串的转换,c#,C#,嗨,我能够使用binarywriter将ASCII字符串转换为二进制。。as 10101011。需要返回im才能转换二进制-->ASCII字符串。。你知道怎么做吗?举个简单的例子: public void ByteToString() { Byte[] arrByte = { 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0 }; string x = Convert.ToBase64String(arrByte); } 此链接答案提供了有关此类转换的有趣细节

嗨,我能够使用binarywriter将ASCII字符串转换为二进制。。as 10101011。需要返回im才能转换二进制-->ASCII字符串。。你知道怎么做吗?

举个简单的例子:

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

   string x = Convert.ToBase64String(arrByte);
}
此链接答案提供了有关此类转换的有趣细节:


下面是您的应用程序的完整代码


如果只有ASCII特许,则可以使用Encoding.ASCII.GetBytes和Encoding.ASCII.GetString


这应该可以解决问题。。。或者至少让你开始

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();
}
所以


有时,与其使用内置工具,不如使用自定义代码。。尝试此功能:

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

通过010000010000010001001000011000011000011000011000011000011000011000011000011000011000011000011000011000011000011000011000011000011000011000011000011000011000011000011000011000011000011000011000011000011000011000011000011000011000011000011000011000011000011000011000011000011000011000011000。。。。但是它给出了一个垃圾~System.Text.Encoding.ASCII.GetStringdata?Convert.ToBase64Stringdata有什么问题?为什么要将字节推送到流中,然后从该流中再次读取这些字节?您想做什么?说你有什么,你想要什么。如果你使用的是ToBase64String,结果当然是base-64。我想你是在试图被禁止提问,你是一个很棒的工作。别再三问同样的问题了@Sudantha 101010到底是多少?如果你能描述一下这个算法,也许有人能帮你实现它。非常感谢程序员。。这正是我所需要的,而且工作出色。。我一整天都在尝试停电,最后!!非常感谢D@Sudantha:我把你的两个相同的问题合并在一起;你可能想重新接受这个答案,因为它在另一个问题上被接受了。它有效,谢谢。我的代码长度是7,所以我只把8改为7。
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();
}
Encoding.ASCII.GetString(data);
var data = GetBytesFromBinaryString("010000010100001001000011");
var text = Encoding.ASCII.GetString(data);
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();
}