web-dev-qa-db-ja.com

StringBuilderとバイト変換

私は次のコードを持っています:

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

しかし、私はこのエラーを受け取ります:

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

次のコードは問題を修正します。

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

問題は、StringBuilderから文字列結果を渡す必要があるときに、GetBytesStringBuilder関数に渡すことです。

34
Scott Smith

GetBytesは、パラメーターとしてStringBuilderを受け入れません。 data.ToString()で文字列を使用します

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

ASCIIは、今世紀のテキストに適したエンコーディング選択ではありません。 Webおよびモバイルアプリケーションは少なくともUTF-8を使用する必要があり、グローバル化されたビジネス環境またはソーシャルネットワーキング環境で動作するはずのその他のタイプのアプリケーションも使用する必要があります。

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

これを試してください。 StringBuilderはオブジェクトです。そこから、次のように文字列値を取得する必要があります。

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

これを試して:

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