Convertire un array di bytes in stringa e viceversa

venerdì 23 gennaio 2009 - 18.37

tizio90 Profilo | Newbie

Salve. Avrei bisogno di convertire un array di bytes in stringa e viceversa SENZA però utilizzare nessuna particolare codifica. O meglio... nel senso che 1 byte = 1 carattere. Queste funzioni possono andar bene?

Encoding.Default.GetString
Encoding.Default.GetBytes

Lo chiedo per essere sicuro, le stringhe del .NET mi terrorizzano! Giorni fa stavo impazzendo per un problema di codifica appunto...

aiedail92 Profilo | Expert

Ciao

1 byte = 1 carattere corrisponde alla codifica ASCII oppure la codifica Ansi (Ascii esteso), quindi puoi usare Encoding.Default oppure Encoding.ASCII (che però ha solo 127 caratteri, contro i 255 dell'ascii esteso)

Usando la seconda, tutti i caratteri che vanno sopra il codice 127 vengono trasformati in '?', quindi ti consiglio di usare Encoding.Default

Luca

tizio90 Profilo | Newbie

Grazie per la risposta, ma la cosa strana è che non funziona!!
Mi sono costruito delle funzioni apposite:
public static string array_string(byte[] array) { string output = ""; for (int i = 0; i < array.Length; i++) output += (char)array[i]; return output; } public static byte[] string_array(string str) { byte[] output = new byte[str.Length]; for (int i = 0; i < str.Length; i++) output[i] = (byte)str[i]; return output; }
Con queste funzioni la conversione avviene in modo corretto, con le funzioni Encoding no.

aiedail92 Profilo | Expert

Forse se hai usato la Encoding.Default, è possibile che il tuo computer utilizzi come encoding predefinita una non standard (oppure non quella che tu vuoi). Se è così, prova ad usare Encoding.ASCII (che è solo a 7 bit, quindi con pochi caratteri), oppure crea direttamente l'encoding per l'europa centrale (standard iso 8859-1):

//Ottiene l'econding standard iso 8859-1, europa occidentale Encoding enc = Encoding.GetEncoding(1252); byte[] str = enc.GetBytes("stringa di prova");

Luca
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5