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){
   ...
}

但是,我仍然找不到将单个数字转换为两个值的方法。

谁能帮我实现这一目标?

4

1 回答 1

3

简单地反转数学。最好使用unsigned类型。

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