返回首页
当前位置: 主页 > 网络编程 > .Net实例教程 >

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

时间:2017-12-11 22:49来源:知行网www.zhixing123.cn 编辑:麦田守望者

平常写程序很少输出二进制字符串,大多输出字符型、整型、日期型等,再加上直接操作二进制的频率远低于操作字符、整数,所以有关 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。

------分隔线----------------------------
标签(Tag):C#
------分隔线----------------------------
推荐内容
猜你感兴趣