VB.NETで バイトから文字に変換するには?

解決


プログラ1年生  2004-05-28 21:59:53  No: 113562

16進数表示    a = 61,  あ = 82 A0,
string型の配列 b(0)を用意し、

b(0) = "61"
chr(b(0))

表示は

a

となり成功。しかし、「あ」等の2byte文字を表示したい場合はどうすればい
いのでしょうか?  ただし、ひとつの配列には1byte対応させたいです。
例えば、b(0) = "82" , b(1) = "A0" と入れた場合の変換方法を知りたいです。


プログラ1年生  2004-05-28 23:14:41  No: 113563

すいません、自己解決してしまいました。

b(0) = "82"
b(1) = "A0"

TextBox1.Text = Chr("&H" & b(0) & b(1))

で、「あ」と、うまく表示されました。

Hexと、Chrにたどり着くまで長かった・・・。。。


魔界の仮面弁士  2004-05-28 23:41:24  No: 113564

回答を書いている間に自己解決したようですが、
折角書いたので投稿しちゃいます。(汗

> しかし、「あ」等の2byte文字を表示したい場合
# Unicode (UTF-8) だと、「あ」は「E3 81 82」の3バイトだったりします。

>   ただし、ひとつの配列には1byte対応させたいです。
であれば、Stringの配列ではなく、Byteの配列を用意した方が楽かも。

  Dim B() As Byte = {&H82, &HA0}

「あ」の文字に復元するなら、

  '1文字だけで変換
  Dim C As Char = Chr(B(0) * &H100 + B(1))
  '文字列として一括変換
  Dim S As String = System.Text.Encoding.GetEncoding("Shift_JIS").GetString(B)

などと書けますし、16進数表記にするなら、

  'String.Formatメソッドで個別に変換
  Dim S1 As String = S1.Format("{0:X2}-{1:X2}", B(0), B(1))
  'BitConverter.ToStringメソッドで一括変換
  Dim S2 As String = System.BitConverter.ToString(B)

と書けますよ。


※返信する前に利用規約をご確認ください。




  


  このエントリーをはてなブックマークに追加