将字节数组写入文本文件
Writing a Byte Array to a text file
正在尝试将值从字节数组写入文本文件。当我将数据写入屏幕上的文本框时,它会正确显示,但当我打开文本文件时却不会。这是我在屏幕上显示它的方式:
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";
}
}
但是当我将 data
写入记事本文件时,我得到以下信息:
/ db % dd # ?d 2 cct 3 dd0 ......
这是我将字节数组写入文本文件的方法
File.WriteAllBytes(@"c:\folder\file.txt", data);
如何将它写入文本文件,就像它在屏幕上显示的那样?
两种方式做同样的事情。
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());
阅读问题,我假设字节数组格式只是 "length" 在字节 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());
否则,一旦您在 RichTextBox 中有了文本(使用您的代码),您就可以这样做:
File.WriteAllText(@"c:\folder\file.txt", richTextBox2.Text);
或者更清楚:
richTextBox2.SaveFile(@"c:\folder\file.txt", RichTextBoxStreamType.PlainText);
(我假设这里是一个 WinForms RichTextBox
,但我敢打赌控件的名称)
正在尝试将值从字节数组写入文本文件。当我将数据写入屏幕上的文本框时,它会正确显示,但当我打开文本文件时却不会。这是我在屏幕上显示它的方式:
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";
}
}
但是当我将 data
写入记事本文件时,我得到以下信息:
/ db % dd # ?d 2 cct 3 dd0 ......
这是我将字节数组写入文本文件的方法
File.WriteAllBytes(@"c:\folder\file.txt", data);
如何将它写入文本文件,就像它在屏幕上显示的那样?
两种方式做同样的事情。
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());
阅读问题,我假设字节数组格式只是 "length" 在字节 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());
否则,一旦您在 RichTextBox 中有了文本(使用您的代码),您就可以这样做:
File.WriteAllText(@"c:\folder\file.txt", richTextBox2.Text);
或者更清楚:
richTextBox2.SaveFile(@"c:\folder\file.txt", RichTextBoxStreamType.PlainText);
(我假设这里是一个 WinForms RichTextBox
,但我敢打赌控件的名称)