- 追加された行はこの色です。
- 削除された行はこの色です。
#author("2019-12-30T15:34:04+09:00","","")
#author("2019-12-30T16:50:27+09:00","","")
#navi(../)
* StringBuilderをByteの配列に変換する方法 [#k90f224f]
「'System.Text.StringBuilder'から'char[]'へ変換することができません。」のメッセージが表示され解決に困っている場合、~
本記事が参考なると思います。~
#ref(01.png)
#htmlinsert(windev-top.html)
* 関連記事 [#df4deacf]
-[[文字列をバイト配列に変換・バイト配列を文字列に変換>.NET/文字列をバイト配列に変換・バイト配列を文字列に変換]]
* 動作確認環境 [#zf9c1d02]
- Windows 10 ver.1909
- Visual Studio 2019
- .Net Core
* StringBuilderはStringではない! [#rd9401e1]
ついつい StringBuilder を String と勘違いし以下のようなエラーが Visual Studio上で表示され、「なぜ!?」となった場合は~
''ToString()するだけです。
''ToString()するだけ''です。
* サンプルコード [#p749ce1a]
C#とVisual Basic(VB)のサンプルコードを以下に記します。
** C# [#zf3b5637]
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);
}
}
-エラーとならないサンプルコード
StringBuilder変数sbのToString()メソッドを呼び出しGetBytes()の引数に渡しています。~
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());
}
}
** Visual Basic [#b4ff1459]
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
-エラーとならないサンプルコード
StringBuilder変数sbのToString()メソッドを呼び出しGetBytes()の引数に渡しています。~
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配列に変換する必要があります。
#htmlinsert(windev-top.html)