我想創建一個方法,它接受任何文件並將其作爲0和1的數組(即其二進制代碼)讀取。我想將該二進制代碼保存爲文本文件。你可以幫我嗎?謝謝。如何在C#中讀取二進制文件?
21
A
回答
40
快速和髒版打印:
byte[] fileBytes = File.ReadAllBytes(inputFilename);
StringBuilder sb = new StringBuilder();
foreach(byte b in fileBytes)
{
sb.Append(Convert.ToString(b, 2).PadLeft(8, '0'));
}
File.WriteAllText(outputFilename, sb.ToString());
+1
@Andrey:請參閱「快速和骯髒」。顯然,在生產中,使用文件流的東西會更好。重要的部分是從字節轉換爲二進制字符串。 – 2010-03-11 17:42:41
12
那麼,讀它並不難,只需使用FileStream來讀取一個字節[]。除非將1和0轉換爲十六進制,否則將其轉換爲文本通常不是可能的或有意義的。使用BitConverter.ToString(byte [])過載很容易。您通常希望在每行中轉儲16或32個字節。您可以使用Encoding.ASCII.GetString()嘗試將字節轉換爲字符。做這個樣例程序:
using System;
using System.IO;
using System.Text;
class Program {
static void Main(string[] args) {
// Read the file into <bits>
var fs = new FileStream(@"c:\temp\test.bin", FileMode.Open);
var len = (int)fs.Length;
var bits = new byte[len];
fs.Read(bits, 0, len);
// Dump 16 bytes per line
for (int ix = 0; ix < len; ix += 16) {
var cnt = Math.Min(16, len - ix);
var line = new byte[cnt];
Array.Copy(bits, ix, line, 0, cnt);
// Write address + hex + ascii
Console.Write("{0:X6} ", ix);
Console.Write(BitConverter.ToString(line));
Console.Write(" ");
// Convert non-ascii characters to .
for (int jx = 0; jx < cnt; ++jx)
if (line[jx] < 0x20 || line[jx] > 0x7f) line[jx] = (byte)'.';
Console.WriteLine(Encoding.ASCII.GetString(line));
}
Console.ReadLine();
}
}
4
您可以使用BinaryReader來讀取每個字節,然後使用BitConverter.ToString(byte[])找出如何在每次以二進制表示。
然後你可以使用這個表示和write它來一個文件。
+0
謝謝你的回答。 – Boris 2010-03-11 16:18:58
3
相關問題
- 1. C#從讀取文本文件中讀取二進制文件
- 2. 如何讀取二進制文件在C++中
- 3. 如何從二進制文件讀取C文本文件?
- 4. C:讀取二進制文件
- 5. C二進制文件讀取
- 6. C,讀取二進制文件?
- 7. 讀取二進制文件C++
- 8. 在MatLab中讀取二進制文件
- 9. 在c#中讀取exe文件作爲二進制文件
- 10. 如何讀取C++中的二進制文件
- 11. 如何停止從二進制文件中讀取c
- 12. 如何讀取用c寫的java中的二進制文件#
- 13. 在C++中以二進制形式讀取任何文件?
- 14. 在C中搜索二進制碼(讀取緩衝的二進制文件)
- 15. 正在讀取二進制.SAVE文件?
- 16. 正在讀取二進制文件
- 17. 如何讀取二進制文件的C#
- 18. 如何使用c#讀取二進制文件?
- 19. 在C中使用內存映射讀取二進制文件
- 20. 在C++中讀取和寫入int到二進制文件
- 21. 在C++中讀取和寫入二進制文件
- 22. 在C++中使用MsgPack讀取二進制文件
- 23. 如何在Android中讀取二進制.AMF文件
- 24. 如何在Node.js中逐字節讀取二進制文件
- 25. 如何在二進制文件中讀取整數和日期
- 26. 如何在flex中讀取文件的二進制內容
- 27. 如何讀取文本文件中的二進制字段
- 28. 如何讀取二進制文件直到文件結束?
- 29. C++二進制文件讀入結構
- 30. C++,同時讀寫二進制文件
你的問題還不清楚。這兩個文件應該是什麼樣子? – SLaks 2010-03-11 15:29:42
我想他想將文件的位模式存儲到文本文件中。 – Oded 2010-03-11 15:32:30
源文件是二進制編碼還是編碼(文本,如ASCII,UTF-8,UTF-16等)?換句話說,如果你在記事本這樣的文本編輯器中打開文件,你會看到零和那個? – Pat 2010-03-11 15:55:01