数据操作-提取数据高八位和低八位或进行合并(C语言实现)

  进行数据处理时,尤其是搞嵌入式的经常会遇到要提取数据的哪一位啊,设置数据的哪一位啊,提取数据的高四位,提取数据的高八位等等之类的操作,接下来通过实际的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);
}

猜你喜欢

转载自blog.csdn.net/qq_33475105/article/details/109151349
今日推荐