常见问题——关于字符串中包含'\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"之后的都不会显示

参考

posted @ 2024-10-25 08:34  shanzm  阅读(23)  评论(0编辑  收藏  举报
TOP