在c#中读取exe文件作为二进制文件

时间:2011-09-22 18:20:29

标签: c# exe binaryfiles

我想在我的c#代码中读取exe文件,然后解码为base64。

我这样做

FileStream fr = new FileStream(@"c:\1.exe", FileMode.Open, FileAccess.Read, FileShare.Read);
StreamReader sr = new StreamReader(fr);
fr.Read(data, 0, count);

但问题是,当我写这个文件时,写入的文件被破坏了。 在十六进制车间分析中,十六进制代码值20被替换为0。

现在请建议解决方案。感谢

2 个答案:

答案 0 :(得分:7)

StreamReader只能用于文本文件。使用二进制文件,您需要直接使用FileStream或:

byte[] buffer = File.ReadAllBytes(@"c:\1.exe");
string base64Encoded = Convert.ToBase64String(buffer);
// TODO: do something with the bas64 encoded string

buffer = Convert.FromBase64String(base64Encoded);
File.WriteAllBytes(@"c:\2.exe", buffer);

答案 1 :(得分:3)

StreamReader官方文档:

“实现从特定编码的字节流中读取字符的TextReader。”

这是文本,而不是二进制文件。试试Stream或BinaryReader ..(你为什么尝试使用StreamReader?)