解決済みの質問
皆さんこんばんは。
最近VB.NET2000でVisual Basicをはじめたのですが、どうにもString型の値をByte配列へ変換するやり方が分かりません。
VB6.0だとByte配列にStringを代入するだけでいいそうなのですが、.NETで代入しようとすると『型"String"の値を"Byteの1次元配列"に変換できません』というビルドエラーが表れてしまいます。
CByte( Mid(str,i,1) )
CLng( Mid(str,i,1) )
他にも上記コードのように一つずつ変換しようと試みたのですが、String中のある文字がワイドバイトらしく、System.InvalidCastExceptionが表れてしまいます。
("『"を上下反転したような文字)
ワイドバイトのStringを1バイトずつ区切ってByte配列やLong配列へ格納する手法というものはありませんでしょうか。
よろしくお願いします。
投稿日時 - 2007-11-12 22:21:14
Option Explicit On
Option Strict On
Option Compare Binary
Option Infer Off ' VB2008以上。
Class Q3512824
Shared Sub Main()
Dim Str1 As String = "ほげふが"
Dim ByteArray1 As Byte()
'Code Page 932 = Shift_JISもどき
'Code Page 65001 = UTF-8
ByteArray1 = System.Text.Encoding.GetEncoding(65001).GetBytes(Str1)
For Each Byte1 As Byte In ByteArray1
System.Console.WriteLine(Byte1.ToString)
Next
End Sub
End Class
投稿日時 - 2007-11-13 04:03:35
補足
himajin100000さん
紹介していただいた手法で
System.Console.WriteLine(Byte1.ToString)
ではなく、
For i = 1 to length
System.Console.WriteLine( Byte1(i) )
Next
のように1文字づつ回して確認してみたところ、Byte配列が生成されているのを確認しました。
早とちりな返答をしてしまい、大変申し訳ありませんでした。
投稿日時 - 2007-11-13 16:52:19
お礼
himajin100000さん
素早い返答ありがとうございます。
すみません、私の説明不足でした。
私がいま使っているAPIは、ポートが出したパケットをString型として出力するというものなのです。
つまり文章をエンコードするというよりも、JavaのString.getBytes()や、C言語のchar配列のようにASCIIコードとして変換したいのです。
himajin100000さんの紹介してくれた手法でも試してみましたが、"System.Byte[]"と空文字(?)らしき出力が出てくるのみで、うまくいきませんでした。
投稿日時 - 2007-11-13 12:57:43
6人が「このQ&Aが役に立った」と投票しています
OKWaveのオススメ
おすすめリンク