Pytanie : C# Czytanie kartoteka w bajt, wtedy ono, wtedy nawracać ono z powrotem bajt

Cześć, I wydawać się problem gdy czytelniczy segregować w bajt, then ono, then ono z powrotem bytes.

The kod być:

byte [] maniak = null;
FileStream fs = nowy FileStream (System.IO.Path.GetTempPath () + "/myprogram.exe", FileMode.Open, FileAccess.Read);
BinaryReader br = nowy BinaryReader (fs);
long numBytes = nowy FileInfo (System.IO.Path.GetTempPath () +" /myprogram.exe "). Długość;
buff = br.ReadBytes ((int) numBytes);

System.Text.ASCIIEncoding = nowy System.Text.ASCIIEncoding ();

string buffasstring = encoding.GetString (maniak);
byte [] prgbk2bytes= encoding.GetBytes (buffasstring);


--
Why być prgbk2bytes bajt być różny the orignal program bajt? Jak móc I the oryginalny program bajt tylny po ono sznurek.

Many thanks

Odpowiedź : C# Czytanie kartoteka w bajt, wtedy ono, wtedy nawracać ono z powrotem bajt


ray_code, I próbować twój kod na mój .exe kartoteka. Gdy ty powiedzieć the bajt przed i po odróżniać się.

The powód dlaczego odróżniać się:

Pod być linia od msdn (Zrozumienie Encodings: http://msdn.microsoft.com/en-us/library/ms404377.aspx)

"•Jeżeli twój zastosowanie mieć zawartość który być ściśle ASCII i szyfrować ono z ASCIIEncoding, ściśle non-ASCII charakter szyfrować jako znak zapytania ("? "). Jeżeli the zastosowanie wtedy odszyfrowywać ten dane, the informacja gubić."

Obvioursly the bajt dane od the .exe kartoteka być "nie ASCII" i informacja gubić.

To być the rozwiązanie dla to:

Pod być linia od msdn (Klasa: http://msdn.microsoft.com/en-us/library/system.text.encoding.aspx)

"Jeżeli twój zastosowanie musieć arbitralny binarny dane w tekst, ono musieć protokół tak jak uuencode, che uprawomocniać metoda tak jak Convert.ToBase64CharArray."

Oczywiście the bajt dane od the .exe kartoteka być arbitralny binarny dane i ty musieć Base64 zamiast jak pokazane w the kod zamiast:
(1):
2:
3:
4:
5:
6:
7:
8:
9:
10:
bajt [] maniak = null;
FileStream fs = nowy FileStream (System.IO.Path.GetTempPath () + "/myprogram.exe", FileMode.Open, FileAccess.Read);
BinaryReader br = nowy BinaryReader (fs);
długi numBytes = nowy FileInfo (System.IO.Path.GetTempPath () + "/myprogram.exe"). Długość;
maniak = br.ReadBytes ((int) numBytes);

//System.Text.ASCIIEncoding = nowy System.Text.ASCIIEncoding ();

smyczkowy buffasstring = Convert.ToBase64String (maniak);
bajt [] prgbk2bytes= Convert.FromBase64String (buffasstring);
Inne rozwiązania  
 
programming4us programming4us