「'System.Text.StringBuilder'から'char[]'へ変換することができません。」のメッセージが表示され解決に困っている場合、
本記事が参考なると思います。
ついつい StringBuilder を String と勘違いし以下のようなエラーが Visual Studio上で表示され、「なぜ!?」となった場合は
ToString()するだけです。
C#とVisual Basic(VB)のサンプルコードを以下に記します。
StringBuilder変数sbをそのままGetBytes()の引数に渡しています。
GetBytes()はStringを要求しているためエラーとなります。
using System; using System.Text; class Program { static void Main(string[] args) { byte[] b; StringBuilder sb = new StringBuilder(); sb.Append("あいうえお"); b = System.Text.Encoding.GetEncoding("utf-8").GetBytes(sb); } }
using System; using System.Text; class Program { static void Main(string[] args) { byte[] b; StringBuilder sb = new StringBuilder(); sb.Append("あいうえお"); b = System.Text.Encoding.GetEncoding("utf-8").GetBytes(sb.ToString()); } }
StringBuilder変数sbをそのままGetBytes()の引数に渡しています。
GetBytes()はStringを要求しているためエラーとなります。
Imports System Imports System.Text Module Program Sub Main(args As String()) Dim b As Byte() Dim sb As StringBuilder = New StringBuilder() sb.Append("あいうえお") b = System.Text.Encoding.GetEncoding("utf-8").GetBytes(sb) End Sub End Module
Imports System Imports System.Text Module Program Sub Main(args As String()) Dim b As Byte() Dim sb As StringBuilder = New StringBuilder() sb.Append("あいうえお") b = System.Text.Encoding.GetEncoding("utf-8").GetBytes(sb.ToString) End Sub End Module
以上、StringBuilderはToStringを使ってStringに変換し、Byte配列に変換する必要があります。