掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
ファイルをバイナリで読み込むには?? (ID:116432)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
> π 2004/09/24(金) 03:38:14 # 夜更かしせず、早く寝ましょう。(人の事は言えない……) えぇと、文字列からバイト配列への変換についてですね。 .NETの世界では、文字列は「UTF-8」という形式で管理されています。 これは、普段目にしている「Shift_JIS」とは異なる形式です。 例えば、 "ABC" という文字列があった場合、バイナリとしては、 UTF-8 : 41 42 43 (3バイト) Shift_JIS : 41 42 43 (3バイト) のように、同じバイナリなのですが、"αβγ" の場合は、 UTF-8 : CE B1 CE B2 CE B3 (6バイト) Shift_JIS : 83 BF 83 C0 83 C1 (6バイト) のように、バイナリが異なってきますし、全角の "ABC" の場合は、 UTF-8 : EF BC A1 EF BC A2 EF BC A3 (9バイト) Shift_JIS : 82 60 82 61 82 62 (6バイト) と、バイト数まで違ってきてしまうのです。 # しかもこれらは、VBのAscW関数で変換されるコードとは、 # 別のエンコードだったりもします。 文字列のエンコードには、他にもいろいろな種類がありますので、 文字列をバイナリに変換する場合には、どのエンコードを使って 変換するのかが、非常に重要になってくるわけです。 そして、この変換を担うのが、System.Text.Encodingクラスというわけです。 Dim BaseText As String = "あいうえお" Dim A(), B() As Byte A = System.Text.Encoding.UTF8.GetBytes(BaseText) B = System.Text.Encoding.GetEncoding("Shift_JIS").GetBytes(BaseText) この場合、どちらも元データは「あいうえお」の5文字ですが、 A にはUTF-8形式、B にはShift_JIS形式にて変換が行われます。 > Newのように新しく何かを作る必要があるのでしょうか。。 New を使うのであれば、 Dim UTF8 As System.Text.Encoding UTF8 = New System.Text.UTF8Encoding() A = UTF8.GetBytes(BaseText) のように書く事もできます。 # 上記のUTF8Encodingクラスは、Encodingクラスから派生(Inherits)されているため、 # UTF8Encodingクラスのインスタンスは、Encodingクラスの変数に格納する事ができます。 あるいは、より短く、 Dim UTF8 As New System.Text.UTF8Encoding() A = UTF8.GetBytes(BaseText) などと書く事もできます。 ただ、GetBytesメソッドは静的メソッドですので、Newせずに、 A = System.Text.Encoding.UTF8.GetBytes(BaseText) と書く事も可能となっています。 なお、「静的メソッド」という用語については、下記を参照してみてください。 http://www.atmarkit.co.jp/fdotnet/basics/oop03/oop03_04.html、
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.