2

私は C で 256 色の VGA をプログラミングしています。私が持っている画面サイズは 320*200 であるため、その仮定に基づいて、プロット ピクセル関数を次のように作成しました。

void plot_pixel(int x, int y, byte color){
  int offset;
  offset = (y<<8) + (y<<6) + x;
  VGA[offset]=color;
}

私は常に、画面の x、y 座標をビデオ メモリのオフセットに変換します。私が達成するのに苦労しているのは、反対のことをすることです。関数にビデオ オフセットを送信し、x 座標と y 座標に対応する 2 つの整数を含む配列を返したいと思います。

get_xy(int offset){
   ...
}

ただし、1 つの数値を 2 つの値に変換する方法はまだ見つかりません。

誰でもこれを達成するのを手伝ってもらえますか?

4

1 に答える 1

3

数学を単純に逆にします。unsignedタイプを使用するのに最適です。

y = offset/((1<<8) + (1<<6)); 
x = offset%((1<<8) + (1<<6)); 
于 2015-12-09T23:37:30.940 に答える