早上遇到一個知識點,一個函數調用時入參傳入值是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;
}
測試結果如下: