Donc, voici l'affaire: J'essaie d'ouvrir un fichier (à partir de bytes), le convertir en une chaîne afin que je puisse jouer avec des métadonnées dans l'en-tête, le convertir aux octets, et enregistrez-le. Le problème que je rencontre actuellement est avec ce code. Lorsque je compare la chaîne qui a été convertie d'avant en arrière (mais pas autrement modifiée) au tableau d'octets d'origine, elle est inégale. Comment puis-je faire ce travail?Conversion de tableau d'octets en chaîne et de retour en C#
public static byte[] StringToByteArray(string str)
{
UTF8Encoding encoding = new UTF8Encoding();
return encoding.GetBytes(str);
}
public string ByteArrayToString(byte[] input)
{
UTF8Encoding enc = new UTF8Encoding();
string str = enc.GetString(input);
return str;
}
Voici comment je les compare.
byte[] fileData = GetBinaryData(filesindir[0], Convert.ToInt32(fi.Length));
string fileDataString = ByteArrayToString(fileData);
byte[] recapturedBytes = StringToByteArray(fileDataString);
Response.Write((fileData == recapturedBytes));
Je suis sûr que ce UTF-8, en utilisant:
StreamReader sr = new StreamReader(filesindir[0]);
Response.Write(sr.CurrentEncoding);
qui retourne "System.Text.UTF8Encoding".
êtes-vous sûr que son UTF-8 pour commencer? –
Je ne suis pas certain. Comment dirais-je si c'est le cas ou pas? –
Que voulez-vous dire, c'est inégale? Votre chaîne est inégale? vous n'obtenez pas le même résultat de chaîne? – Khan