我正在用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坐标转换为视频内存的偏移量。我正在努力实现的目标是做相反的事情。我想发送一个函数视频偏移并返回给我一个数组,其中2个整数对应于x和y坐标:
get_xy(int offset){
...
}
但是,我仍然找不到将单个数字转换为两个值的方法。
任何人都可以帮助我实现这个目标吗?
答案 0 :(得分:2)
简单地反转数学。最好使用unsigned
类型。
y = offset/((1<<8) + (1<<6));
x = offset%((1<<8) + (1<<6));