タイトル : 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())、見つけたのですが、書き込み方がよくわかっていません。 できれば、上書き保存による、バイナリデータの書き込みコードも含めて教えていただければ幸いです。 |