Fråga : C# läsning sparar in i byte, då att konvertera det för att stränga och därefter att konvertera det som är tillbaka till byte

Hi jag verkar för att ha ett problem, när läsning sparar in i byte, då att konvertera den för att stränga, då konvertera den som är tillbaka till bytes.

The, kodifiera är: fantast för

byte [] = ogiltigt;
FileStream fs = nya FileStream (System.IO.Path.GetTempPath () + ”/myprogram.exe”, FileMode.Open, FileAccess.Read); br för
BinaryReader = nya BinaryReader (fs); numBytes för
long = nya FileInfo (System.IO.Path.GetTempPath () +” /myprogram.exe "). Längd;
buff = br.ReadBytes (numBytes); kodning för

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

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


--
Why är prgbk2bytes-byte är olik till orignalprogrambytena? Hur kan jag få de original- programbytena tillbaka når jag har konverterat den för att stränga.

Many thanks

" klar "

Svar : C# läsning sparar in i byte, då att konvertera det för att stränga och därefter att konvertera det som är tillbaka till byte


ray_code jag försökte ditt kodifierar på min .exe sparar. Efter skilja sig åt, som du sade bytena för och.

Resonera varför de skilja sig åt:

Nedanför är en fodra från msdn (överenskommelsekodningar: http://msdn.microsoft.com/en-us/library/ms404377.aspx)

”,•,Om din applikation har nöjt att inte är strängt ASCII och kodar det med ASCIIEncoding, varje tecken non-ASCII kodar, som en ifrågasätta markerar (”? ”). Om applikationen avkoda därefter dessa data, informationen är borttappad.”,

Obvioursly som bytedatan från .exen sparar, är ”inte ASCII”, och information är borttappad.

Vad är lösningen för detta:

Nedanför är en fodra från msdn (kodningen klassificerar: http://msdn.microsoft.com/en-us/library/system.text.encoding.aspx)

”Om din applikation måste koda godtyckliga binära data in i text, den bör använda ett protokoll liksom uuencode, som genomföras av metoder liksom Convert.ToBase64CharArray.”,

Självfallet bytedatan från .exen sparar är godtyckliga binära data, och du bör betrakta using kodningen Base64 i stället som visat i den nedanföra kodifiera:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
fantast för byte [] = ogiltigt;
FileStream fs = nya FileStream (System.IO.Path.GetTempPath () + ”/myprogram.exe”, FileMode.Open, FileAccess.Read);
BinaryReader br = nya BinaryReader (fs);
långa numBytes = nya FileInfo (System.IO.Path.GetTempPath () + ”/myprogram.exe”). Längd;
fantast = br.ReadBytes (numBytes (int));

//System.Text.ASCIIEncoding som kodar = ny System.Text.ASCIIEncoding ();

stränga buffasstring = Convert.ToBase64String (fantast);
byte [] prgbk2bytes= Convert.FromBase64String (buffasstring);
Andra lösningar  
 
programming4us programming4us