程序开发 > C# > 正文

C# 输出二进制字符串(流)的方法

亮术网 2020-08-14 本网原创

平常写程序很少输出二进制字符串,大多输出字符型、整型、日期型等,再加上直接操作二进制的频率远低于操作字符、整数,所以有关 C# 输出二进制流的相关文章也比较少。但有的时候会直接操作二进制流,例如拆分文件的时候,需要判断二进制流中的一些字符是不是汉字,以防止截断一个汉字而生成乱码。

C# 输出二进制字符串可以用 ToString(byte, 2) 方法,byte 是一个英文的二进制流、汉字的半个字节的二进制流等等,每次只可以输出一个 byte,把每次输出的二进制字符串连起来就行了。

 

C# 输出二进制字符串的方法:

首先获得字符串的二进制流,然后循环输出每个字符的二进制编码并合并到一个字符串,为了便于识别,每个二进制编码之间用一个逗号隔开,实现代码如下:

/// <summary>
  /// C# 输出二进制流
  /// </summary>
  /// <returns>二进制字符串</returns>

  private string OutPutBinary()
  {
    string text = "C# 输出二进制字符串";
    byte[] arrByte = System.Text.Encoding.GetEncoding("GB2312").GetBytes(text);
    string byteStr = null;

  foreach (byte b in arrByte)
    {
      if (byteStr == null)
        byteStr = Convert.ToString(b, 2);
      else
        byteStr += "," + Convert.ToString(b, 2);
    }
    return byteStr;
  }

调用:Response.Write("<br />" + OutPutBinary());

输出结果:

1000011,100011,100000,11001010,11100100,10110011,11110110,10110110,11111110,10111101,11111000,11010110,11000110,11010111,11010110,10110111,11111011,10110100,10101110

 

从输出的二进制编码可以看出,汉字都由8位组成,并且每个汉字的每个字节最高位(第7位)都是1(用 GB2312 编码的情况下);英文字母和特殊字符都没有8位,因为前面是0的,输出的时候被省略了,并且它们的最高位都不是1。