常见问题——关于字符串中包含'\0'之后被截断的问题
问题描述
- 串口服务器(串口转WIFI)中发送的信息到我们的WEB接口中
发现在接收某些数据的时候,不完整的情形,断点在vs文本可视化工具中也没有发现问题
原因
字符串中含有"\0"
- 在C和C#中,"\0"是字符串结束的标记,也就是说,当编译器或运行时遇到"\0",它们知道字符串在此结束,'\0'也被称为字符串的“结束符”。'
- 在byte转换为字符串的过程中,如果byte的值为0,则转换成字符串时变为’\0’字符,’\0’字符在C#中意味着字符串结束,如果后面再有字符,则读取字符串的程序也不能读取和显示出来
复现
新建一个WinForm程序,在From1中添加一个TextBox1
public Form1()
{
InitializeComponent();
string s = "aaa\0bbb";
this.textBox1.Text = s;
}
最终在TextBox1中显示的字符串是:"aaa",即字符串:"aaa\0bbb"中"\0"之后的都不会显示