在一個字節中,我設置了一些位 | Video |音頻|揚聲器| mic |耳機|以位 | 1 |爲首1 | 1 | 3 | 1 | 1
1個字節,除了有3個字節的話筒,因此可以有7個組合離開 第一個組合。使用十六進制值設置位和驗證(C)
#define Video 0x01
#define Audio 0x02
#define Speaker 0x04
#define MicType1 0x08
#define MicType2 0x10
#define MicType3 0x20
#define MicType4 (0x08 | 0x10)
#define MicType5 (0x08 | 0x20)
#define MicType6 (0x10 | 0x20)
#define MicType7 ((0x08 | 0x10) | 0x20)
#define HeadPhone 0x40
#define Led 0x80
現在我設定位
MySpecs[2] |= (1 << 0);
MySpecs[2] |= (1 << 2);
//設置mictype6
MySpecs[2] |= (1 << 4);
MySpecs[2] |= (1 << 5);
當我這樣寫的
readCamSpecs()
{
if(data[0] & Video)
printf("device with Video\n");
else
printf("device with no Video\n");
if(data[0] & Audio)
printf("device with Audio\n");
else
printf("device with no Audio\n");
if(data[0] & Mictype7)
printf("device with Mictype7\n");
if(data[0] & Mictype6)
printf("device with Mictype6\n");
}
單位設置的值,它可以找到。 但是,使用多位設置的值(例如MicType5,6,7)會導致錯誤 ,並顯示檢查中的第一項。 我在做什麼錯?
給予好評的作者 - 他是太低,無法給予好評 – 2012-08-01 07:22:20