16進数表示 a = 61, あ = 82 A0,
string型の配列 b(0)を用意し、
b(0) = "61"
chr(b(0))
表示は
a
となり成功。しかし、「あ」等の2byte文字を表示したい場合はどうすればい
いのでしょうか? ただし、ひとつの配列には1byte対応させたいです。
例えば、b(0) = "82" , b(1) = "A0" と入れた場合の変換方法を知りたいです。
すいません、自己解決してしまいました。
b(0) = "82"
b(1) = "A0"
TextBox1.Text = Chr("&H" & b(0) & b(1))
で、「あ」と、うまく表示されました。
Hexと、Chrにたどり着くまで長かった・・・。。。
回答を書いている間に自己解決したようですが、
折角書いたので投稿しちゃいます。(汗
> しかし、「あ」等の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)
と書けますよ。
ツイート | ![]() |