читать EXE-файл как двоичный файл в C # - PullRequest
1 голос
/ 22 сентября 2011

Я хочу прочитать exe-файл в моем коде c #, а затем декодировать как 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 ]

7 голосов
/ 22 сентября 2011

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);
3 голосов
/ 22 сентября 2011

Официальные документы StreamReader:

"Реализует TextReader, который читает символы из потока байтов в определенной кодировке."

Это для текста, а не для двоичных файлов. Попробуйте просто Stream или BinaryReader .. (Почему вы пробовали StreamReader?)

...