C# 字节数组初始化后转换为字符串的问题
问题描述: C#中将一个字节数组初始化后,转换为字符串,发现该字符串并不是null
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
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 }
测试代码如上面所示,经过调试发现receiveBuffer(字节数组)值为Null,但是经过调试发现strReceiveData(转换后的字符串值)并不是Null,而是“\0\0\0...”(总共1024个);
故如果用(strReceiveData != null)判断条件,每次都会输出“>> Receive data”;而用(receiveBuffer != null)则该不会输出;
问题总结:看来<Encoding.Unicode.GetString(receiveBuffer);>字节数组转换为字符串是一个字节一个字节转换的,如果该字节数组为NULL则每个字节转换为“\0”字符,也就是一个字节转换为一个空字符串!