Pergunta : Lima da leitura de C# nos bytes, convertendo então a à corda, convertendo então a de volta aos bytes

Olá!, eu pareço ter um problema quando ler a lima em bytes, a seguir a converter à corda, a seguir a converter de volta ao código de bytes.

The são: lustre = zero do

byte [];
FileStream fs = FileStream novo (System.IO.Path.GetTempPath () + “/myprogram.exe”, FileMode.Open, FileAccess.Read); Br do
BinaryReader = BinaryReader novo (fs); numBytes do
long = FileInfo novo (System.IO.Path.GetTempPath () +” /myprogram.exe "). Comprimento;
buff = br.ReadBytes (numBytes); codificação do

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

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


--o
Why é bytes de prgbk2bytes é diferente aos bytes do programa do orignal? Como posso eu começ o original programar os bytes traseiros após ter convertido o à corda.

Many thanks

class= do

Resposta : Lima da leitura de C# nos bytes, convertendo então a à corda, convertendo então a de volta aos bytes


ray_code, eu tentei seu código em minha lima de .exe. Como você disse os bytes antes e depois de diferem.

A razão pela qual diferem:

Abaixo está uma linha do msdn (codificações compreensivas: http://msdn.microsoft.com/en-us/library/ms404377.aspx)

“•Se sua aplicação tem o índice que não é estritamente ASCII e não o codifica com ASCIIEncoding, cada caráter não-ASCII codifica como um ponto de interrogação (”? "). Se a aplicação descodifica então estes dados, a informação está perdida.”

Obvioursly os dados do byte da lima de .exe é “não ASCII” e a informação é perdida.

O que é a solução para este:

Abaixo está uma linha do msdn (classe da codificação: http://msdn.microsoft.com/en-us/library/system.text.encoding.aspx)

“Se sua aplicação deve codificar dados binários arbitrários no texto, deve usar um protocolo tal como o uuencode, que é executado por métodos tais como Convert.ToBase64CharArray.

Obviamente os dados do byte da lima de .exe são dados binários arbitrários e você deve considerar using a codificação Base64 preferivelmente segundo as indicações do código abaixo:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
lustre = zero do byte [];
FileStream fs = FileStream novo (System.IO.Path.GetTempPath () + “/myprogram.exe”, FileMode.Open, FileAccess.Read);
Br de BinaryReader = BinaryReader novo (fs);
numBytes longos = FileInfo novo (System.IO.Path.GetTempPath () + “/myprogram.exe”). Comprimento;
lustre = br.ReadBytes (numBytes (int));

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

corda que buffasstring = Convert.ToBase64String (lustre);
byte [] prgbk2bytes= Convert.FromBase64String (buffasstring);
Outras soluções  
 
programming4us programming4us