C# 将字节数组写入文本文件

C# 将字节数组写入文本文件,c#,bytearray,C#,Bytearray,尝试将值从字节数组写入文本文件。当我将数据写入屏幕上的文本框时,它会正确显示,但当我打开文本文件时,它不会正确显示。以下是我在屏幕上显示它的方式: foreach (ManagementObject FailData in FailDataSet) { Byte[] data = (Byte[])FailData.Properties["VendorSpecific"].Value; for (int i = 0; i < data[0] - 1; i++) {

尝试将值从字节数组写入文本文件。当我将数据写入屏幕上的文本框时,它会正确显示,但当我打开文本文件时,它不会正确显示。以下是我在屏幕上显示它的方式:

foreach (ManagementObject FailData in FailDataSet)
{
    Byte[] data = (Byte[])FailData.Properties["VendorSpecific"].Value;

    for (int i = 0; i < data[0] - 1; i++)
    {
        for (int j = 0; j < 12; j++)
        {
            richTextBox2.Text = richTextBox2.Text + data[i * 12 + j] + "\t";
        }
        richTextBox2.Text = richTextBox2.Text + "\n";
    }
}

我怎样才能像屏幕上显示的那样将其写入文本文件?

两种方式都做同样的事情

Byte[] data = (Byte[])FailData.Properties["VendorSpecific"].Value;
var sb = new StringBuilder();

for (int i = 0; i < data[0] - 1; i++)
{
    for (int j = 0; j < 12; j++)
    {
        sb.Append(data[i * 12 + j] + "\t");
    }
    sb.AppendLine();
}
File.WriteAllText("filename.ext", sb.ToString());
Byte[]data=(Byte[])FailData.Properties[“vendorsspecific”]值;
var sb=新的StringBuilder();
对于(int i=0;i
阅读此问题,我假设字节数组格式仅为字节0处的“长度”,那么其余部分必须作为ANSI或ASCII字符的解释写入(每个字符1个字节)

每12个字节和换行符之间放置一个制表符

所以我要这样做:

 var data = (byte[])FailData.Properties["VendorSpecific"].Value;
 var sb = new StringBuilder();
 for(var i = 0; i < data[0]-1; i++)
 {
   sb.Append(data[i+1] + "\t");
   if((i % 12)==11) sb.AppendLine();
 }
 File.WriteAllText(@"c:\folder\file.txt", sb.ToString());
或者更清楚地说:

richTextBox2.SaveFile(@"c:\folder\file.txt", RichTextBoxStreamType.PlainText);

(我假设这里有一个WinForms
RichTextBox
,但以控件的名称为准)

字符编码是什么?您似乎在做两件截然不同的事情。在其中一种情况下,您在将字节写入文本框之前将其转换为字符串,而在第二种情况下,您只是将原始字节写入文件。。。如果您希望将字节的值作为文本写入文件,则将其写入字符串,而不是字节。查看此链接,了解有关将编码字节写入字符串的几个选项@Chris如何在写入之前将这些值写入字符串?我用这个敲了一个小时的脑袋?提示:
richTextBox2.Text
是一个
字符串
File.WriteAllText(@"c:\folder\file.txt", richTextBox2.Text);
richTextBox2.SaveFile(@"c:\folder\file.txt", RichTextBoxStreamType.PlainText);