C# 仅从二进制文件中获取字符串

C# 仅从二进制文件中获取字符串,c#,xaml,label,C#,Xaml,Label,我尝试使用xaml标签打印以筛选二进制文件中的字符串,但是当我显示文件内容时,我得到了一个漂亮的“损坏”字符,而不是整个文件内容 我认为问题在于读取文件,我已经可以使用最基本的技术更改标签内容,直到今天它仍然工作得很好 label.Text = mystring ; 事实是:我的二进制文件中的数据将文本(一些我不关心的随机数据)放置在文件的开头,我的理论是我的程序开始读取,读取非ascii字符,然后停止读取。。。 我读到使用File类,可能是错误的 label.Text = File.Read

我尝试使用xaml标签打印以筛选二进制文件中的字符串,但是当我显示文件内容时,我得到了一个漂亮的“损坏”字符,而不是整个文件内容

我认为问题在于读取文件,我已经可以使用最基本的技术更改标签内容,直到今天它仍然工作得很好

label.Text = mystring ;
事实是:我的二进制文件中的数据将文本(一些我不关心的随机数据)放置在文件的开头,我的理论是我的程序开始读取,读取非ascii字符,然后停止读取。。。 我读到使用File类,可能是错误的

label.Text = File.ReadAllText(my_file); 
所以,我现在锁上了。我不知道我应该怎么做


希望你能帮助我:D

我不看文本就说不出什么,但似乎你需要添加编码

大概是这样的:

string myText = File.ReadAllText(path, Encoding.Default);

您需要知道二进制文件的结构。您需要知道字符串的编码。普通文本文件的开头通常有两个左右字节的标记,用于标识其编码(如果是Unicode)。这样系统就可以知道它的UTF-8、UTF-16。。。 如果您试图读取二进制文件,则此信息不存在。相反,读取过程很可能会发现意外的二进制数据。因此,不能将二进制文件作为文本读取。如果您的文件的结构在开始时是二进制数据,后来只有文本,只需跳过第一部分,从第二部分开始读取即可。但我不认为这有那么简单:

  • 如果它真的是二进制数据,那么很可能文件结构要复杂得多,您需要做更多的工作来读取它
  • 如果只有前两个字节是二进制数据,那么它可能是一个文本文件,您可以毫无问题地读取它,您可能只需要将正确的编码传递给读取函数