Question : Dossier de lecture de C# dans des bytes, le convertissant alors en corde, le convertissant alors de nouveau aux bytes

Bonjour, je semble avoir un problème quand la lecture du dossier dans des bytes, alors la conversion de lui en corde, alors la conversion de lui de nouveau au code de bytes.

The est : cuir épais = nulle du

byte [] ;
FileStream fs = nouveau FileStream (System.IO.Path.GetTempPath () + « /myprogram.exe », FileMode.Open, FileAccess.Read) ; Br du
BinaryReader = nouveau BinaryReader (fs) ; numBytes du
long = nouveau FileInfo (System.IO.Path.GetTempPath () + » /myprogram.exe "). Longueur ;
buff = br.ReadBytes (numBytes) ; codage du

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

string buffasstring = encoding.GetString (cuir épais) ;
byte [] prgbk2bytes= encoding.GetBytes (buffasstring) ;


--le
Why sont des bytes de prgbk2bytes sont différent aux bytes de programme d'orignal ? Comment peux j'obtenir l'original programmer les bytes arrières après conversion de lui en corde.

Many thanks

class= de

Réponse : Dossier de lecture de C# dans des bytes, le convertissant alors en corde, le convertissant alors de nouveau aux bytes


ray_code, j'ai essayé votre code sur mon dossier de .exe. Comme vous avez dit les bytes avant et après diffèrent.

La raison pour laquelle ils diffèrent :

Au-dessous de est une ligne de msdn (codages d'arrangement : http://msdn.microsoft.com/en-us/library/ms404377.aspx)

« •Si votre application a le contenu qui n'est pas strictement ASCII et ne la code pas avec ASCIIEncoding, chaque caractère non-ASCII code-t-il comme point d'interrogation (" ? "). Si l'application décode alors ces données, l'information est perdue. »

Obvioursly les données de byte à partir du dossier de .exe est « pas ASCII » et l'information est perdue.

Ce qui est la solution pour ceci :

Au-dessous de est une ligne de msdn (classe de codage : http://msdn.microsoft.com/en-us/library/system.text.encoding.aspx)

« Si votre application doit coder des données binaires arbitraires dans le texte, elle devrait employer un protocole tel que l'uuencode, qui est mis en application par des méthodes telles que Convert.ToBase64CharArray. »

Évidemment les données de byte à partir du dossier de .exe sont des données binaires arbitraires et vous devriez considérer using le codage Base64 à la place suivant les indications du code ci-dessous :
1 :
2 :
3 :
4 :
5 :
6 :
7 :
8 :
9 :
10 :
cuir épais = nulle de byte [] ;
FileStream fs = nouveau FileStream (System.IO.Path.GetTempPath () + « /myprogram.exe », FileMode.Open, FileAccess.Read) ;
Br de BinaryReader = nouveau BinaryReader (fs) ;
longs numBytes = nouveau FileInfo (System.IO.Path.GetTempPath () + « /myprogram.exe »). Longueur ;
cuir épais = br.ReadBytes (numBytes (international)) ;

//System.Text.ASCIIEncoding codant = nouveau System.Text.ASCIIEncoding () ;

corde buffasstring = Convert.ToBase64String (cuir épais) ;
byte [] prgbk2bytes= Convert.FromBase64String (buffasstring) ;
Autres solutions  
  •  MS Excel 2007 et pdf - l'exportation vers le pdf prend de longues heures !
  •  Dans le Perl, comment j'ajoute une valeur à la liste, puis le contrôle pour voir si la valeur existent avant d'ajouter une nouvelle valeur
  •  Comment fais j'initialiser de la HP BL460c G6 de san et de la HP XP 240000
  •  Comment fais j'employer une clef de permis de volume sur un ordinateur de HP avec du CD de restauration
  •  Emplacement primaire de deux SCCM dans l'annuaire actif
  •  L'initiateur et la HP D2D de l'iSCSI R2 du serveur 2008 de Windows GERCENT l'issue
  •  Stocker le dossier dans le mysql using connector.net et le champ de goutte
  •  Carte vidéo d'USB - bit 32 sur le matériel travaillant au niveau du bit 64 ?
  •  asp.net que j'essaye de convertir une forme de HTML en forme d'aspx ou ? ce qui jamais. Aide du besoin sur la façon dont à à elle.
  •  Winzip 12 issues de secours du travail ?
  •  
    programming4us programming4us