Top / Prog / .NET / 文字のエンコード

文字のエンコード

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

2005-01-13 (木) 09:24:43

プログラミング


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2005-12-26 (月) 00:53:20 (4109d)