C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

■86235 / 1階層)  バイナリデータの途中から切り出して出力する方法
□投稿者/ 魔界の仮面弁士 (1525回)-(2018/01/01(Mon) 23:20:41)
No86230 (へなちょこ さん) に返信
> また同じ構造のデータがあるので、連続して同じ処理を行い、データテーブルの新しい
> 列に代入したいという意味です。)

とりあえず VB2017 向けのコードを書いてみました。

「ファイルが見つからなかった場合」や「ファイルレイアウトが破損していた場合」の
エラー対処は省略しています。


Imports System.IO
Module Module1

 Sub Main()
  For Each entry In EnumerateTuple("Sample.dat", System.Text.Encoding.Unicode)
   MsgBox(entry.Hena & vbCrLf & entry.Choco)
  Next
 End Sub

 Public Iterator Function EnumerateTuple(fileName As String, enc As System.Text.Encoding) As IEnumerable(Of (Hena As String, Choco As String))
  Using stm As New FileStream(fileName, FileMode.Open), reader As New BinaryReader(stm)
   Do While stm.Position < stm.Length
    reader.ReadBytes(2) '最初の2バイトは読み捨て
    Dim len1 As Integer = 2 * reader.ReadByte() '文字1のバイト数
    Dim len2 As Integer = 2 * reader.ReadByte() '文字2のバイト数
    reader.ReadBytes(4) '次の4バイトは読み捨て
    Dim bin1 As Byte() = reader.ReadBytes(len1) '文字列1のデータ
    Dim bin2 As Byte() = reader.ReadBytes(len2) '文字列2のデータ
    Dim txt1 As String = enc.GetString(bin1)
    Dim txt2 As String = enc.GetString(bin1)
    Yield (txt1, txt2) '文字列1, 文字列2 のタプルを順次返却
   Loop
  End Using
 End Function

End Module
編集キー/

前の記事(元になった記事) 次の記事(この記事の返信)
←バイナリデータの途中から切り出して出力する方法 /へなちょこ →Re[2]: バイナリデータの途中から切り出して出力する方法 /へなちょこ
 
上記関連ツリー

バイナリデータの途中から切り出して出力する方法 / へなちょこ (18/01/01(Mon) 19:46) #86230
Re[1]: バイナリデータの途中から切り出して出力する方法 / Azulean (18/01/01(Mon) 22:20) #86233
│└ Re[2]: バイナリデータの途中から切り出して出力する方法 / へなちょこ (18/01/01(Mon) 22:40) #86234
バイナリデータの途中から切り出して出力する方法 / 魔界の仮面弁士 (18/01/01(Mon) 23:20) #86235 ←Now
  └ Re[2]: バイナリデータの途中から切り出して出力する方法 / へなちょこ (18/01/02(Tue) 12:53) #86236
    └ Re[3]: バイナリデータの途中から切り出して出力する方法 / 魔界の仮面弁士 (18/01/02(Tue) 20:44) #86237
      └ Re[4]: バイナリデータの途中から切り出して出力する方法 / へなちょこ (18/01/02(Tue) 22:35) #86238 解決済み
        ├ Re[5]: バイナリデータの途中から切り出して出力する方法 / 魔界の仮面弁士 (18/01/05(Fri) 13:46) #86250 解決済み
        │└ Re[6]: バイナリデータの途中から切り出して出力する方法 / へなちょこ (18/01/09(Tue) 21:01) #86262
        └ Re[5]: バイナリデータの途中から切り出して出力する方法 / 魔界の仮面弁士 (18/01/05(Fri) 14:48) #86251 解決済み
          └ Re[6]: バイナリデータの途中から切り出して出力する方法 / へなちょこ (18/01/09(Tue) 21:09) #86263

上記ツリーを一括表示 / 上記ツリーをトピック表示
 
上記の記事へ返信