1 バイトで、いくつかのビットを設定 |ビデオ | オーディオ | スピーカー | マイク | ヘッドフォン | ビット |1 | で導かれる 1 | 1 | 3 | 1 | 1
3 バイトを持っているため、最初の組み合わせを残して 7 つの組み合わせを持つことができるマイクを除くすべての 1 バイト。
#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);
//マイクタイプ6を設定
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) はエラーになり、最初にチェックされたものを表示します。私は何を間違っていますか?