http://www.picfun.com/equipj53.htmlにて紹介されている、PC側ソフトウェアに、以下のようなコードが含まれています。
Dim data() As Byte data() = StrConv(Left(Text2.Text & " ", 16), 128)
これは、Visual Basic内部で文字の扱いがUNICODEで行われているので、それをASCII CODEに変換するコードです。
ところが、このコードはVB.NETでは互換性が無く、自動変換されたコードを実行しても、実行中に例外が発生します。
'UPGRADE_TODO: System.Text.UnicodeEncoding.Unicode.GetBytes() を使うために 'コードがアップグレードされましたが、動作が異なる可能性があります。 '詳細については、 'ms-help://MS.VSCC/commoner/redir/redirect.htm?keyword="vbup1059"' を 'クリックしてください。 data = System.Text.UnicodeEncoding.Unicode.GetBytes(_ StrConv(VB.Left(Text2.Text & " ", 16), 128))
そこで、 http://www.atmarkit.co.jp/fdotnet/dotnettips/010str2byte/str2byte.html を参考にし、以下のように移植しました。
'UNICODE->ASCII変換 asciiEnc = Encoding.GetEncoding("ascii") data = asciiEnc.GetBytes(VB.Left(Text1.Text & " ", 16)) Console.WriteLine(BitConverter.ToString(data))
1行目:変換後の文字コードを指定します。"ascii"の他にも選択可能。(詳細は"GetEncoding?"メソッドのマニュアルをご覧下さい)
2行目:Textコントロール"Text1"に入力されている文字を、左から16文字分ASCII Codeに変換します。
3行目:コンソールにASCII Codeで出力します。
http://d.hatena.ne.jp/myasu/20050112