常见问题——关于字符串中包含'\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 @   shanzm  阅读(45)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
历史上的今天:
2022-10-25 代码段——构建Datatable对象
TOP
点击右上角即可分享
微信分享提示