求16進制數據或運算后的值(即多個16進制相加的和)


早上遇到一個知識點,一個函數調用時入參傳入值是unsigned long類型,這個值是一大堆16進制數據做或運算(即相加)而來,然后就寫了一個或運算求值的方法自己使用

代碼如下:

//定義16進制數據的宏

#define WFS_PIN_FK_0 (0x00000001)
#define WFS_PIN_FK_1 (0x00000002)
#define WFS_PIN_FK_2 (0x00000004)
#define WFS_PIN_FK_3 (0x00000008)
#define WFS_PIN_FK_4 (0x00000010)
#define WFS_PIN_FK_5 (0x00000020)
#define WFS_PIN_FK_6 (0x00000040)
#define WFS_PIN_FK_7 (0x00000080)
#define WFS_PIN_FK_8 (0x00000100)
#define WFS_PIN_FK_9 (0x00000200)
#define WFS_PIN_FK_ENTER (0x00000400)
#define WFS_PIN_FK_CANCEL (0x00000800)
#define WFS_PIN_FK_CLEAR (0x00001000)

#include <iostream>

using namespace std;

int main()
{
  unsigned long ulKeysValue =0;  //存放最后算出來的或運算值(即16進制相加后的值)

  //16進制數據的數組
  unsigned long ulKeysValueArray[] = {WFS_PIN_FK_0,WFS_PIN_FK_1,WFS_PIN_FK_2,WFS_PIN_FK_3,WFS_PIN_FK_4,WFS_PIN_FK_5,WFS_PIN_FK_6,WFS_PIN_FK_7,WFS_PIN_FK_8,WFS_PIN_FK_9,WFS_PIN_FK_ENTER,WFS_PIN_FK_CANCEL,WFS_PIN_FK_CLEAR};

  int nlen = sizeof(ulKeysValueArray)/sizeof(ulKeysValueArray[0]);
  for(int i=0;i<nlen;i++)
  {
    ulKeysValue= ulKeysValue|ulKeysValueArray[i];
  }

  printf("nlen=%d\n",nlen);
  printf("value = %d\n",ulKeysValue);
  return 0;
}

測試結果如下:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM