int checkSpecificBits( byte data, int pos1, int pos2)
{
/*
判断byte字节中,某两个字节位是否被置为 11, 返回 0 无故障
返回 2 两位置为 11,有故障
返回 1 两位中某一位置为 1,有故障
测试代码:
checkSpecificBits(0x23,0,1);
checkSpecificBits(0x04,2,3);
checkSpecificBits(0x08,4,5);
checkSpecificBits(0xc0,6,7);
*/
byte mask1;
byte mask2;
byte mask;
int ret=0;
ret=0; //当前无故障DTC
mask1 = 1<<pos1; // Create a bitmask for the first position
mask2 = 1<<pos2; // Create a bitmask for the second position
mask = mask1| mask2; // Combine both masks to check both positions
if((data & mask) == mask)
{
ret=2; //有故障DTC, 两个bit位 都置 11
}else{
if((data & mask) != 0)
{
ret=1; //有故障DTC, 只有一个bit位 都置 1
}
}
write(" 校验%02X ,第 %d和 %d位的值 , 是否被置为 1, [mask=%02X] ret=%d",data,pos1,pos2,mask,ret);
return ret;
}
测试结果如下: