当前位置: 首页 > 编程语言 > C#

读取以null结尾的字符串Share

时间:2023-04-10 20:53:45 C#

读取以null结尾的字符串每个字符串都以null结尾。编码是UTF-8。在python中,我只是读取一个字节,检查它是否为0,将其附加到字节数组,并继续读取字节直到我看到一个0。然后我将字节数组转换为字符串并继续。所有字符串都被正确读取。我如何在C#中读取它?我不认为我只是将字节附加到数组,因为数组是固定大小的。您可以使用列表:Listlist=newList();while(reading){//或者你的条件是什么list.add(readByte);}字符串输出=Encoding.UTF8.GetString(list.ToArray());或者您可以使用StringBuilder:StringBuilderbuilder=newStringBuilder();while(reading){builder.Append(readByte);}字符串输出=builder.ToString();以下应该做你需要的。所有文本都应该在myText列表中。vardata=File.ReadAllBytes("myfile.bin");列表myText=newList();intlastOffset=0;for(inti=0;i我假设您正在使用StreamReader实例:StringBuildersb=newStringBuilder();using(StreamReaderrdr=OpenReader(...)){Int32nc;while((nc=rdr.Read())!=-1){Charc=(Char)nc;if(c!='')sb.Append(c);}}如果您的“二进制文件”仅包含以空字符结尾的UTF8字符串,则for.NET它不是一个“二进制文件”而只是一个文本文件,因为空字符也是字符。因此,您可以使用StreamReader读取文本并将其拆分为空字符。(六年后,“你”可能是一些新读者,而不是OP。)单行(ish)解决方案是:使用(varrdr=newStreamReader(path))returnrdr.ReadToEnd().split(新字符[]{''});但是如果文件中的最后一个字符串“正确”终止,那会给你一个尾随的空字符串。一个更详细的解决方案(表示为StreamReader上的扩展方法)可能对非常大的文件有不同的处理方式:ListReadAllNullTerminated(thisSystem.IO.StreamReaderrdr){varbldr=newSystem.Text.StringBuilder();国际数控;while((nc=rdr.Read())!=-1){Charc=(Char)nc;如果(c==''){stringsRead.Add(bldr.ToString());bldr.Length=0;}否则bldr.Append(c);}//可选地返回任何尾随未终止的字符串if(bldr.Length!=0)stringsRead.Add(bldr.ToString());返回字符串读取;}或者一次只读一个(比如ReadLine)以上就是C#学习教程:阅读所有以null结尾的字符串分享的内容,如果对大家有用又需要详细了解C#学习教程,我希望大家多多关注——stringReadNullTerminated(thisSystem.IO.StreamReaderrdr){varbldr=newSystem.Text.StringBuilder();国际数控;while((nc=rdr.Read())>0)bldr.Append((char)nc);返回bldr.ToString();}本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: