簡體   English   中英

如何從C語言中的兩個或多個字節中讀取特定的一組位

[英]How to read particular set of bits from two or more bytes in C language

如何從兩個或多個字節中讀取特定的一組位,以便將其放在一個數組下。 例如:

0100 0011    0110 1100

這里是 2 個字節。我想要位索引從第一個字節開始,直到第二個字節中的位並將其存儲在一個數組中。

運算符>>將字節中的每一位右移

這里的方法是將所需的位移到最右邊的位置。 因此,對於第一位,我們必須向右移動 7 個位置,對於第二位,我們必須移動 6,依此類推。

運算符&執行位到位 AND。 所以,表現如下:

0x01 & (some_value)

將只考慮字節的最右邊位 (LSB)。

其余代碼只是將位放在數組中正確位置的邏輯

   int  i   = 0;
   char bt1 = 0x43;
   char bt2 = 0x6c;

   char bit_array[16];

   // Get bits from bt1
   for ( i = 0; i < 8; i++ )
   {
      bit_array[i] = 0x01 & ( bt1 >> (7-i) );
   }

   // Get bits from bt2
   for (i = 8; i < 16; i++ )
   {
      bit_array[i] = 0x01 & ( bt2 >> (15-i) );
   }

   printf("bit_array is: \n");

   for (i = 0; i < sizeof(bit_array); i++ )
   {
      printf("%d ", bit_array[i]);
   }

   printf("\n");

   // Shoud print
   //bit_array is:
   //0 1 0 0 0 0 1 1 0 1 1 0 1 1 0 0

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM