tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
[ツリー表示へ]  [ワード検索]  [Home]

タイトル Re^2: データ書き込みについて
投稿日: 2007/08/01(Wed) 01:10
投稿者area88
こんにちは、area88です。

>ビット演算子Andでマスクすればよいかと。

私の持っている解説書では、あまりビット演算子が詳しく書かれていなく、
できれば、もうちょっと詳しく教えていただきたいと思います。

私の行っているプログラミングは、以下のような感じです。

ボタン1(開く)をクリックすると、

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

OpenFileDialog1.InitialDirectory = My.Computer.FileSystem.SpecialDirectories.MyDocuments
            
OpenFileDialog1.FileName = CurFileName

OpenFileDialog1.Filter = "セーブデータ(*.bin)|*.bin"

If OpenFileDialog1.ShowDialog() = Windows.Forms.DialogResult.OK Then
   CurFileName = OpenFileDialog1.FileName

   LoadFile() '後述のプロシージャ
   Me_Data() '後述のプロシージャ

End If

End Sub
------------------------------------------------------------------------------

ボタン1をクリックすると、ダイアログボックスからセーブテータが読み込まれます。
で、プロシージャLoadFile() 、Me_Data()の処理が行われる。

Private Sub LoadFile()

        '入力ストリームを作成する
        Dim ifs As FileStream = New FileStream(CurFileName, FileMode.Open)

        'ファイルの長さ(バイト単位)
        Dim filelen As Long = ifs.Length

        '配列を作成する
        ByteData = New Byte(filelen) {}

        'バイナリリーダーを作成する
        Dim br As BinaryReader = New BinaryReader(ifs)
        Dim count As Integer = 0
        Do While (True)
            Try
                ByteData(count) = br.ReadByte()
            Catch ex As EndOfStreamException
                Exit Do
            End Try
            count += 1
        Loop
        ifs.Close()
        FileLength = count

End Sub
-------------------------------------------------------------------------------

Private Sub Me_Data()

'バイトデータ抽出
  Dim a As String

'16進数を2進数に変換し、ビット位置から、サイズまでのデータを抽出
  Dim x As String

'総資金、総資源
  a = BitConverter.ToString(ByteData, &H656, 6).Replace("-", "")
  x = Convert.ToString(Convert.ToInt64(a, 16), 2).PadLeft(48, "0")
  TextBox1.Text = Convert.ToInt32(x.Substring(0, 24), 2) '総資金
  TextBox2.Text = Convert.ToInt32(x.Substring(24, 24), 2) '総資源

End Sub
-------------------------------------------------------------------------------

例えば、ここで総資金100000、総資源80000と読み込まれたとして、
テキストボックスの数値を、総資金200000、総資源100000に書き換え、
ボタン2(上書き保存)をクリックすると、上書き保存されるというふうにしたいのです。
その際、&H656から総資金として24ビット分、その後総資源として24ビット分のデータを書き込みたいのですが、And演算子をどう活用したらよいのか、???です。(T_T)

申し訳ありませんが、And演算子を使った少し具体的なコードを教えていただけませんか?
よろしくお願いいたします。<(_ _)>
また、バイナリデータの読み込み方は(LoadFile())、見つけたのですが、書き込み方がよくわかっていません。
できれば、上書き保存による、バイナリデータの書き込みコードも含めて教えていただければ幸いです。

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。