バイナリファイルからChar配列読み取り Visual Basic .NET
どうやら面倒なことをやってしまっていたようで、、、昨日はWavファイルの最初の4バイトを4個のByteに代入した後でChr関数で文字に変換していました。しかし、ByteじゃなくてChar型の変数に1文字ずつ読み込めばアスキー文字になってくれるのですね。Charの配列を作って、1個1個に文字を読み込んで、String型変数に追加していくとひとつの文字列にまとめることができました。
そのあと、データサイズや周波数の情報などの数字はInteger型、フォーマット名などの文字はChr型で順にせっせと取得していくと、ヘッダ情報を並べていくことができるようです。
Dim ChunkIDLetters(3) As Char Dim ChunkID As String Dim LoopCount As Short Dim WavName As String LoopCount = 0 ChunkID = "" WavName = OpenFileDialog1.FileName FileOpen(1, WavName, OpenMode.Binary) For LoopCount = 0 To 3 FileGet(1, ChunkIDLetters(LoopCount), ) ChunkID = ChunkID + ChunkIDLetters(LoopCount) Next LoopCount Label1.Text = ChunkID
追記 C#だと
C#では.NET共通の型を使用するのでcharがUnicodeになり、2バイト単位で読み込んでしまいます。なので、byte型で読み込んで、アスキー文字に変換する必要がありそうです。今はその方法が見つかりません、、、、
追記:後日、サンプルを発見 http://d.hatena.ne.jp/jjs/20070425/p1