C语言将一个二维坐标存放在一个整数中

今天做了一个触摸屏设备的坐标处理,因为坐标是从内核中的触摸屏事件获取的并没有与应用层直接相关联,坐标数据从底层到应用层需要一个值传递了过程,因为时间紧就直接搭在了按键值传递的过程中,只能传递一个参数,所以直接通过位操作将坐标数据合并在一个变量中。 我这里使用的触摸屏的大小是800X480,坐标的值都不大所以我用一个uint数据变量来承载。

//将坐标值分别存在,高16位和低16位。
void SetPointXY(uint *vaule)
{
	uint x,y;
	x = 300;
	y = 200;
	
	if(NULL != vaule)
	*vaule = (x << 16) + y;
	printf("vaule = %p",*vaule);
}

//分离高低16位,把值重新拆分开来
void GetPointXY(uint* x,uint* y,uint vaule)
{
		(*x) = (vaule >> 16 )&0xffff;
		(*y)= vaule & oxffff;
		printf("x = %d ,x = %p,y = %d,y = %p\n",*x,*x,*y,*y);
}

其实就是将一个16进制的高低32位进行分离,将这个数右移16位,然后与上0xff便取到了这个数的高16位,将vaule与上0xffff便取到了这个数的低16位,这样就达到了分离高地位的目的,

おすすめ

転載: blog.csdn.net/qq_42014326/article/details/106822188