进行数据处理时,尤其是搞嵌入式的经常会遇到要提取数据的哪一位啊,设置数据的哪一位啊,提取数据的高四位,提取数据的高八位等等之类的操作,接下来通过实际的code来看看吧。
PART Ⅰ
取某个数据的高八位和低八位:
void main(void)
{
short test_data;
unsigned char buf[2];
buf[0] = test_data;
buf[1] = test_data >> 8 ;
printf("buf1 = %d buf2 = %d\n",buf[0], buf[1]);
}
PART Ⅱ
数据合成,将两字节数据拼成16 bit的数据。
(1)移位操作
void main(void)
{
short new_data;
unsigned char buf[2];
buf[0] = 1;
buf[1] = 1;
new_data = ((*((uint8_t *)buf+ 1)<< 8))| *(uint8_t *)buf;
printf("data = %d\n",new_data);
}
(2)此外还可以通过使用“union”共用体通过共用内存块的方式得到新的数据,共用体使用了内存覆盖技术,同一时刻只能保存一个成员的值,由于2个char类型数据为16 bit,正好是一个short类型数据的位数,可通过union这一方式进行数据的合并。
union data
{
unsigned char buf[2];
short test_data;
};
void main(void)
{
union data test;
test.buf[0] = 1;
test.buf[1] = 1;
printf("data = %d\n", test.test_data);
}