Writing a Byte Array to a text file
试图将字节数组中的值写入文本文件。当我将数据写入屏幕上的文本框时,它会正确显示,但当我打开文本文件时不会显示。以下是我在屏幕上显示的方式:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | 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 +" "; } } |
但当我将
/ db % dd # ?d 2 cct 3 dd0 ......
以下是我如何将字节数组写入文本文件
1 | File.WriteAllBytes(@"c:\folder\file.txt", data); |
我怎样才能像在屏幕上显示的那样将它写入文本文件?
两种方法都要做同样的事情。
1 2 3 4 5 6 7 8 9 10 11 12 | 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()); |
在阅读这个问题时,我假设字节数组格式在字节0处只是"长度",那么其余的必须作为ANSI或ASCII字符(每个字符1个字节)的解释写入。
每12个字节和换行符之间放置一个制表符。
所以我会这样做:
1 2 3 4 5 6 7 8 | 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中有文本(使用代码),就可以执行以下操作:
1 | File.WriteAllText(@"c:\folder\file.txt", richTextBox2.Text); |
或者更清楚:
1 | richTextBox2.SaveFile(@"c:\folder\file.txt", RichTextBoxStreamType.PlainText); |
(我假设这里有一个winforms