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