

皆さんこんばんは。
最近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配列へ格納する手法というものはありませんでしょうか。
よろしくお願いします。
No.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配列が生成されているのを確認しました。
早とちりな返答をしてしまい、大変申し訳ありませんでした。
himajin100000さん
素早い返答ありがとうございます。
すみません、私の説明不足でした。
私がいま使っているAPIは、ポートが出したパケットをString型として出力するというものなのです。
つまり文章をエンコードするというよりも、JavaのString.getBytes()や、C言語のchar配列のようにASCIIコードとして変換したいのです。
himajin100000さんの紹介してくれた手法でも試してみましたが、"System.Byte[]"と空文字(?)らしき出力が出てくるのみで、うまくいきませんでした。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
Visual Basic でのコードをASCII変換、16進変換したものを元に戻す方法を教えてください
Visual Basic(VBA)
-
VB.netでDLLを読み込んで実行する際に、スタックを不安定にしていますというエラーが出ます。
Visual Basic(VBA)
-
変数の参照でエラーが出てしまいます。(VB.NET)
Visual Basic(VBA)
-
-
4
PLCとPCの通信
Visual Basic(VBA)
-
5
byte配列の内容をstringにコピーしたい
Visual Basic(VBA)
-
6
VBでbyte配列型のインスタンスを生成する方法を教えてください
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
配列数式の解除
-
VBA 1次元配列を2次元に追加する
-
subの配列引数をoptionalで使う...
-
FortranにあってCにない関数?...
-
配列変数の添字が範囲外ですと...
-
OutlookVBAでサブフォルダ一括作成
-
verilogで配列の任意の8bitを取...
-
linest関数に配列を渡す
-
ListViewで、非表示列って作れ...
-
【マクロ】【画像あり】4つの...
-
教えて下さい
-
Excel_マクロ_現在開いているシ...
-
エクセルで特定の列が0表示の場...
-
【EXCEL VBA】オートシェイプを...
-
マクロの連続印刷が突然不可能...
-
Excelで特定の文字のところで自...
-
ApplicationとWorksheetFunctio...
-
Excel・Word リサーチ機能を無...
-
マクロ実行時、自動で背景色を...
-
特定のPCだけ動作しないVBAマク...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
配列数式の解除
-
2つ以上の変数を比較して最大数...
-
特定のセル範囲で4文字以上入力...
-
VBA 1次元配列を2次元に追加する
-
subの配列引数をoptionalで使う...
-
配列変数の添字が範囲外ですと...
-
2次元動的配列の第一引数のみを...
-
ListViewで、非表示列って作れ...
-
MATLABにて場合分け関数を定義...
-
VB6 配列を初期化したい
-
AES暗号にて、AES_set_encrypt_...
-
配列を任意の数値で埋める方法
-
RPG E仕様書について
-
VBのFunctionで、配列を引数...
-
ビンゴ
-
順列の作成
-
エクセルで最小値から0を除く方法
-
VBA Match関数の限界
-
VLOOKUP関数で、一番下...
-
for each の現在の配列ポインタ...
おすすめ情報