常见问题——关于字符串中包含'\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"之后的都不会显示
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
2022-10-25 代码段——构建Datatable对象