Cuestión : Archivo de la lectura de C# en los octetos, entonces convirtiéndolo a la secuencia, entonces convirtiéndolo de nuevo a octetos

Hola, parezco tener un problema cuando es la lectura del archivo en octetos, después convertirlo a la secuencia, después convertirlo de nuevo a código de bytes.

The: piel de ante = falta de información del

byte [];
FileStream fs = nuevo FileStream (System.IO.Path.GetTempPath () + “/myprogram.exe”, FileMode.Open, FileAccess.Read); Br del
BinaryReader = nuevo BinaryReader (fs); numBytes del
long = nuevo FileInfo (System.IO.Path.GetTempPath () +” /myprogram.exe "). Longitud;
buff = br.ReadBytes (numBytes); codificación del

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

string buffasstring = encoding.GetString (piel de ante);
byte [] prgbk2bytes= encoding.GetBytes (buffasstring);


--¿el
Why es octetos de prgbk2bytes es diferente a los octetos del programa del orignal? Cómo puedo conseguir el original programar los octetos traseros después de convertirlo a la secuencia.

Many thanks

class= del

Respuesta : Archivo de la lectura de C# en los octetos, entonces convirtiéndolo a la secuencia, entonces convirtiéndolo de nuevo a octetos


ray_code, intenté su código en mi archivo de .exe. Como usted dijo los octetos antes y después de diferencian.

La razón por la que diferencian:

Debajo está una línea del msdn (codificaciones de comprensión: http://msdn.microsoft.com/en-us/library/ms404377.aspx)

“•¿Si su uso tiene contenido que no sea terminantemente ASCII y no lo codifique con ASCIIEncoding, cada carácter no-ASCII codifica como signo de interrogación (”? "). Si el uso entonces descifra estos datos, se pierde la información.”

Obvioursly los datos del octeto del archivo de .exe es “no ASCII” y se pierde la información.

Cuál es la solución para esto:

Debajo está una línea del msdn (clase de la codificación: http://msdn.microsoft.com/en-us/library/system.text.encoding.aspx)

“Si su uso debe codificar datos binarios arbitrarios en el texto, debe utilizar un protocolo tal como uuencode, que es ejecutado por métodos tales como Convert.ToBase64CharArray.

Los datos del octeto del archivo de .exe son obviamente datos binarios arbitrarios y usted debe considerar usar la codificación Base64 en lugar de otro según las indicaciones del código abajo:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
piel de ante = falta de información del octeto [];
FileStream fs = nuevo FileStream (System.IO.Path.GetTempPath () + “/myprogram.exe”, FileMode.Open, FileAccess.Read);
Br de BinaryReader = nuevo BinaryReader (fs);
numBytes largos = nuevo FileInfo (System.IO.Path.GetTempPath () + “/myprogram.exe”). Longitud;
piel de ante = br.ReadBytes (numBytes (internacional));

//System.Text.ASCIIEncoding que codifica = nuevo System.Text.ASCIIEncoding ();

secuencia buffasstring = Convert.ToBase64String (piel de ante);
octeto [] prgbk2bytes= Convert.FromBase64String (el buffasstring);
Otras soluciones  
 
programming4us programming4us