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

タイトル Re^4: データ書き込みについて
投稿日: 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ビットとして、
一括して上書きしてしまうとか、、、。

取り出すのは、なんとかなったのですが、書き込むのができなくて、ジタバタしております。

すいません、やっかいな質問で。

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

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