【问题标题】:Binary To Corresponding ASCII String Conversion二进制到对应的 ASCII 字符串转换
【发布时间】:2011-05-15 04:12:04
【问题描述】:

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

【问题讨论】:

  • System.Text.Encoding.ASCII.GetString(data) ?
  • Convert.ToBase64String(data) 有什么问题?为什么要将字节推入流中,然后从该流中再次读取这些字节?
  • 你想做什么?只要说出你有什么,你想要什么。如果您使用 ToBase64String,当然结果会是 base-64
  • 我试图禁止你提问,你做得很好。不要一遍又一遍地问同样的事情!
  • @Sudantha 101010 到底是多少 ABC?如果您要描述该算法,也许有人可以帮助您实现它。

标签: c#


【解决方案1】:

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

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

【讨论】:

  • 非常感谢 Coder.. 正是我所需要的,而且工作非常出色! ..我整天都在尝试停电,最后!多谢 ! :D
  • @Sudantha:我已经合并了你的两个相同的问题;你可能想重新接受这个答案(它在另一个问题上被接受了)。
  • 它有效,谢谢。我的代码长度为 7,所以我只将 8 更改为 7。
【解决方案2】:

如果您只有 ASCII 包机,您可以使用 Encoding.ASCII.GetBytesEncoding.ASCII.GetString

var text = "Test";
var bytes = Encoding.ASCII.GetBytes(text);
var newText = Encoding.ASCII.GetString(bytes);

【讨论】:

    【解决方案3】:

    这是您的 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);
    

    【讨论】:

      【解决方案4】:

      举个简单的例子:

      public void ByteToString()
      {
         Byte[] arrByte = { 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0 };
      
         string x = Convert.ToBase64String(arrByte);
      }
      

      这个链接的答案有关于这种转换的有趣细节:

      binary file to string

      【讨论】:

      • 嗨 leniel 我有一个字符串如何将其转换为 byte[] 我使用 Encoding.ASCHII .... 但它给了一个垃圾〜
      【解决方案5】:

      有时,与其使用内置工具,不如使用“自定义”代码。试试这个功能:

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

      使用 010000010100001001000011 进行测试,它使用“原始”ASCII 值返回 ABC

      【讨论】:

        猜你喜欢
        • 2014-06-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-02-03
        • 1970-01-01
        • 1970-01-01
        • 2020-12-31
        • 1970-01-01
        相关资源
        最近更新 更多