アプリ版:「スタンプのみでお礼する」機能のリリースについて

皆さんこんばんは。
最近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配列へ格納する手法というものはありませんでしょうか。

よろしくお願いします。

A 回答 (1件)

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

この回答への補足

himajin100000さん

紹介していただいた手法で
System.Console.WriteLine(Byte1.ToString)
ではなく、
For i = 1 to length
System.Console.WriteLine( Byte1(i) )
Next
のように1文字づつ回して確認してみたところ、Byte配列が生成されているのを確認しました。

早とちりな返答をしてしまい、大変申し訳ありませんでした。

補足日時:2007/11/13 16:52
    • good
    • 0
この回答へのお礼

himajin100000さん
素早い返答ありがとうございます。

すみません、私の説明不足でした。
私がいま使っているAPIは、ポートが出したパケットをString型として出力するというものなのです。
つまり文章をエンコードするというよりも、JavaのString.getBytes()や、C言語のchar配列のようにASCIIコードとして変換したいのです。

himajin100000さんの紹介してくれた手法でも試してみましたが、"System.Byte[]"と空文字(?)らしき出力が出てくるのみで、うまくいきませんでした。

お礼日時:2007/11/13 12:57

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!