タイトル | : Re^4: データ書き込みについて |
記事No | : 5989 |
投稿日 | : 2007/08/01(Wed) 22:38 |
投稿者 | : area88 |
こんにちは、area88です。 よねKENさん、レスありがとうございます。 もう少し、私の頭の悪さにお付き合い下さい。
前スレの24ビットのように、ちょうど3バイトに分けられる時は、 私も16進数に変換し、データを取り出していましたが、 以下のような処理もあり、どうしても2進数で取り出す必要がでてきました。
a2 = BitConverter.ToString(ByteData, &H677, 4).Replace("-", "") x2 = Convert.ToString(Convert.ToInt32(a2, 16), 2).PadLeft(32, "0") TextBox48.Text = Convert.ToInt32(x2.Substring(0, 7), 2) '基礎グラフ TextBox47.Text = Convert.ToInt32(x2.Substring(7, 7), 2) 'MSグラフ TextBox46.Text = Convert.ToInt32(x2.Substring(14, 7), 2) 'MAグラフ TextBox45.Text = Convert.ToInt32(x2.Substring(21, 7), 2) '敵性グラフ
2進数に変換し、7ビット分取り出し、それを10進数に変換したものを、 テキストボックスに表示させます。 例えば、セーブデータ(バイナリデータ)の基礎グラフ2進数で「1000100」だと、 10進数で「68」ですね。 この「68」がテキストボックスに表示されます。 このテキストボックスで「68」を「80」に変更すると、 2進数で「1010000」になります。 で、セーブすると&H677から7ビット分、つまり「1000100」→「1010000」に置き換えたい。
私のしょぼい考えでは、10進数「80」を2進数「1010000」に変換し、 7ビット分一気に、セーブデータに上書き保存すればよいのかと。
次にMSグラフは変更なしだが、MAグラフは他の数値に変更した。 このようにして、変更したビット分を、上書き保存していきたいのです。
そこで、And演算子やシフトを用いたとき、特定のアドレス(ビット位置?)に 2進数で置き換えられるのか?という疑問がでてきました。
さらに、上記のような処理は1000ぐらいあります。(@_@;) 例えば、&H123から、初めは3ビット、続けて5ビット、9ビット、1ビットと 取り出す連続するビット数もバラバラの時もあります。 この場合、9ビット部分が変更されたら、そのビット分を上書きするみたいな。 もしくは、連続したビットなら、変更がないビットも含めて、 この場合、3ビット、5ビット、9ビット、1ビットとして、 一括して上書きしてしまうとか、、、。
取り出すのは、なんとかなったのですが、書き込むのができなくて、ジタバタしております。
すいません、やっかいな質問で。
|