データ操作-データの上位8ビットと下位8ビットを抽出するか、それらをマージします(C言語で実装)

  データ処理を実行する場合、特に組み込みシステムを使用する場合、データを抽出するビット、データを設定するビット、データの上位4ビットを抽出するビット、データの上位8ビットを抽出するビットなどに遭遇することがよくあります。 。操作、実際のコードを見てみましょう。

パートⅠ
  は、特定のデータの上位8ビットと下位8ビットを取得します。

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]);
}

パートⅡ
  データ合成、2バイトのデータを16ビットのデータに結合します。
(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)さらに、「ユニオン」ユニオンを使用してメモリブロックを共有することにより、新しいデータを取得できます。ユニオンはメモリ上書きテクノロジを使用し、2文字型のデータであるため一度に1つのメンバーの値しか保存できません。 16ビットは正確に短いタイプのデータのビット数であり、データは結合の方法でマージできます。

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