C# 字节数组初始化后转换为字符串的问题

  问题描述: C#中将一个字节数组初始化后,转换为字符串,发现该字符串并不是null

1 private void Form1_Load(object sender, EventArgs e)
2         {
3              byte[] receiveBuffer = new byte[1024];
4              string strReceiveData = Encoding.Unicode.GetString(receiveBuffer);
5              if (receiveBuffer != null)
6              {
7                  lbTest.Items.Insert(0, ">> Receive data");//lbTest为一个listbox
8              }
9          }
View Code
    测试代码如上面所示,经过调试发现receiveBuffer(字节数组)值为Null,但是经过调试发现strReceiveData(转换后的字符串值)并不是Null,而是“\0\0\0...”(总共1024个);
   故如果用(strReceiveData != null)判断条件,每次都会输出“>> Receive data”;而用(receiveBuffer != null)则该不会输出;

问题总结:看来<Encoding.Unicode.GetString(receiveBuffer);>字节数组转换为字符串是一个字节一个字节转换的,如果该字节数组为NULL则每个字节转换为“\0”字符,也就是一个字节转换为一个空字符串!
posted @ 2015-09-05 15:26  halo2world  阅读(207)  评论(0编辑  收藏  举报