我想在我的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。
现在请建议解决方案。感谢
答案 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?)