2012-02-02 3 views
17

Ho il seguente codice:StringBuilder e byte di conversione

StringBuilder data = new StringBuilder(); 
for (int i = 0; i < bytes1; i++) 
{ 
    data.Append("a"); 
} 
byte[] buffer = Encoding.ASCII.GetBytes(data); 

ma ottengo questo errore:

cannot convert from 'System.Text.StringBuilder' to 'char[]' 
The best overloaded method match for 'System.Text.Encoding.GetBytes(char[])' 
has some invalid arguments 

risposta

24

Il seguente codice risolverà il problema.

StringBuilder data = new StringBuilder(); 
for (int i = 0; i < bytes1; i++) 
{ data.Append("a"); } 
byte[] buffer = Encoding.ASCII.GetBytes(data.ToString()); 

Il problema è che si passa un StringBuilder alla funzione GetBytes quando è necessario passare il risultato stringa dalla StringBuilder.

3

provare questo:

byte[] buffer = Encoding.ASCII.GetBytes(data.ToString().ToCharArray()); 
+1

Non è necessario convertire esplicitamente la stringa in un array, GetBytes() accetta una stringa. – roken

+0

grazie @roken, hai ragione –

11

GetBytes non accetta una StringBuilder come parametro Utilizzare una stringa con data.ToString()

byte[] buffer = Encoding.ASCII.GetBytes(data.ToString()); 
4

Si prega di provare questo. StringBuilder è un oggetto .. da lì, devi ottenere il valore di stringa come segue.

byte[] buffer = Encoding.ASCII.GetBytes(data.ToString()); 
2

ASCII non è una buona scelta di codifica per il testo in questo secolo. Le applicazioni Web e mobili dovrebbero utilizzare almeno UTF-8 e qualsiasi altro tipo di applicazione che dovrebbe funzionare in un ambiente di business o social networking globalizzato.

StringBuilder builder = new StringBuilder(); 
for (int i = 0; i < iLength; ++ i) 
    builder.Append("a"); 
byte[] bytesFromBuilder = Encoding.UTF8.GetBytes(builder.ToString());