Quindi, ecco l'affare: sto cercando di aprire un file (da byte), convertirlo in una stringa in modo da poter fare confusione con alcuni metadati nell'intestazione, convertirlo di nuovo a byte e salvarlo. Il problema che sto incontrando in questo momento è con questo codice. Quando confronto la stringa che è stata convertita avanti e indietro (ma non altrimenti modificata) nella matrice di byte originale, non è uguale. Come posso fare questo lavoro?Conversione di array di byte in stringa e viceversa in 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;
}
Ecco come li sto confrontando.
byte[] fileData = GetBinaryData(filesindir[0], Convert.ToInt32(fi.Length));
string fileDataString = ByteArrayToString(fileData);
byte[] recapturedBytes = StringToByteArray(fileDataString);
Response.Write((fileData == recapturedBytes));
Sono sicuro che è UTF-8, utilizzando:
StreamReader sr = new StreamReader(filesindir[0]);
Response.Write(sr.CurrentEncoding);
che restituisce "System.Text.UTF8Encoding".
sei sicuro che sia UTF-8 con cui iniziare? –
Non sono sicuro. Come potrei dire se lo è o no? –
Cosa vuoi dire, è ineguale? La tua stringa non ha eguali? non ottieni lo stesso risultato di stringa? – Khan