web-dev-qa-db-fra.com

StringBuilder et conversion d'octets

J'ai le code suivant:

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

Mais je reçois cette erreur:

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

Le code suivant résoudra votre problème.

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

Le problème est que vous passez un StringBuilder à la fonction GetBytes lorsque vous devez passer le résultat de chaîne à partir du StringBuilder.

34
Scott Smith

GetBytes n'accepte pas un StringBuilder comme paramètre. Utilisez une chaîne avec data.ToString ()

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

ASCII n'est pas un bon choix d'encodage pour le texte de ce siècle. Les applications Web et mobiles devraient au moins utiliser UTF-8, et tout autre type d'application censé fonctionner dans un environnement commercial ou de réseau social mondialisé devrait également l'être.

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

Veuillez essayer ceci. StringBuilder est un objet .. à partir de là, vous devez obtenir la valeur de chaîne comme suit.

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

essaye ça:

byte[] buffer = Encoding.ASCII.GetBytes(data.ToString().ToCharArray());
3
Allen Xia