La conversion d'un fichier binaire à une chaîne de caractères et vice versa
J'ai créé un webservice qui renvoie un fichier (binaire). Malheureusement, je ne peux pas utiliser byte[] j'ai donc convertir le tableau d'octets en une chaîne de caractères.
Ce que je fais en ce moment est la suivante (mais il ne fonctionne pas):
Convertir un fichier à la chaîne:
byte[] arr = File.ReadAllBytes(fileName);
System.Text.UnicodeEncoding enc = new System.Text.UnicodeEncoding();
string fileAsString = enc.GetString(arr);
Pour vérifier si cela fonctionne correctement, je le convertir via:
System.Text.UnicodeEncoding enc = new System.Text.UnicodeEncoding();
byte[] file = enc.GetBytes(fileAsString);
Mais à la fin, l'original de ce tableau d'octets et le tableau d'octets créé à partir de la chaîne ne sont pas égaux. Dois-je utiliser une autre méthode pour lire le fichier dans un tableau d'octets?
Vous devez vous connecter pour publier un commentaire.
Utilisation
Convertir.ToBase64String
pour le convertir en texte, etConvertir.FromBase64String
pour convertir retour.Encoding
est utilisé pour convertir du texte à une représentation binaire, et à partir d'un représentation binaire de texte retour au texte nouveau. Dans ce cas, vous n'avez pas une représentation binaire de texte - vous avez juste des données binaires arbitraires... doncEncoding
est inapproprié. Même si vous utilisez un encodage qui peut "sorte de" manipuler des données binaires (par exemple, ISO Latin 1), vous trouverez que de nombreuses façons de transmettre le texte va échouer lorsque vous avez des caractères de contrôle, etc.Le codage Base64 vous donnera le texte qui est juste en ASCII, et beaucoup plus facile à manipuler.