Frage : C# Leseakte in die Bytes, sie in die Schnur dann umwandelnd und dann wandeln sie zurück zu Bytes um

Hallo, scheine ich, ein Problem zu haben, wenn, Akte in Bytes zu lesen, dann die Umwandlung sie in Schnur, dann die Umwandlung sie zurück zu bytes.

The Code ist:

byte [] Büffelleder = Null;
FileStream Rumpfstation = neues FileStream (System.IO.Path.GetTempPath () + „/myprogram.exe“, FileMode.Open, FileAccess.Read);
BinaryReader Br = neues BinaryReader (Rumpfstation);
long numBytes = neues FileInfo (System.IO.Path.GetTempPath () +“ /myprogram.exe "). Länge;
buff = br.ReadBytes (numBytes);

System.Text.ASCIIEncoding kodierung = neues System.Text.ASCIIEncoding ();

string buffasstring = encoding.GetString (Büffelleder);
byte [] prgbk2bytes= encoding.GetBytes (buffasstring);


--
Why sind prgbk2bytes Bytes sind verschieden von den orignal Programmbytes? Wie ich das ursprüngliche erhalten kann, nach der Umwandlung es in Schnur die Bytes rückseitig programmieren.

Many thanks

Antwort : C# Leseakte in die Bytes, sie in die Schnur dann umwandelnd und dann wandeln sie zurück zu Bytes um


ray_code, versuchte ich Ihren Code auf meiner .exe Akte. Wie Sie sagten, unterscheiden sich die Bytes vor und nach.

Der Grund, warum sie sich unterscheiden:

Unter ist eine Linie vom msdn (verstehenkodierungen: http://msdn.microsoft.com/en-us/library/ms404377.aspx)

„•Wenn Ihre Anwendung Inhalt hat, der nicht ausschließlich ASCII ist und es mit ASCIIEncoding verschlüsselt, verschlüsselt jeder Buchstabe NichtASCII als Fragezeichen (“? "). Wenn die Anwendung dann diese Daten decodiert, sind die Informationen verloren.“

Obvioursly die Bytedaten von der .exe Akte ist „nicht ASCII“ und Informationen sind verloren.

Was die Lösung für dieses ist:

Unter ist eine Linie vom msdn (kodierungskategorie: http://msdn.microsoft.com/en-us/library/system.text.encoding.aspx)

„Wenn Ihre Anwendung willkürliche binäre Daten in Text verschlüsseln muss, sollte sie ein Protokoll wie uuencode verwenden, das wird eingeführt durch Methoden wie Convert.ToBase64CharArray.

Offensichtlich sind die Bytedaten von der .exe Akte willkürliche binäre Daten und Sie sollten using kodierung Base64 wie in dem Code gezeigt anstatt betrachten unten:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
Büffelleder = Null des Bytes [];
FileStream Rumpfstation = neues FileStream (System.IO.Path.GetTempPath () + „/myprogram.exe“, FileMode.Open, FileAccess.Read);
BinaryReader Br = neues BinaryReader (Rumpfstation);
lange numBytes = neues FileInfo (System.IO.Path.GetTempPath () + „/myprogram.exe“). Länge;
Büffelleder = br.ReadBytes (numBytes (int));

verschlüsselndes //System.Text.ASCIIEncoding = neues System.Text.ASCIIEncoding ();

buffasstring Schnur = Convert.ToBase64String (Büffelleder);
Byte [] prgbk2bytes= Convert.FromBase64String (Buffasstring);
Weitere Lösungen  
 
programming4us programming4us