센서에서 바이트 배열을 검색하려고합니다. 검색된 바이트 배열에는 어떤 데이터가 배열에 있는지 알려주는 바이트 마스크 xx-xx-xx-xx가 있습니다.연산자 '&'는 'byte []'및 'byte []'유형의 피연산자에 적용 할 수 없습니다.
센서 마스크 :
DATA_1 0x00000001
DATA_2 0x00000002
DATA_3 0x00000004
DATA_4 0x00000008
DATA_5 0x00000010
DATA_6 0x00000020
DATA_7 0x00000040
DATA_8 0x00000080
DATA_9 0x00000100
DATA_10 0x00000200
DATA_11 0x00000400
이 바이트 마스크 43-05-00-00, 예를 들어, 해당 데이터 1, 데이터 2, data_7, data_9, data_11 응답하여 배열 될 것이다 내게 말한다. 저는 bitwise-and를 사용하여 Windows의 계산기 응용 프로그램에서 이것을 알고 있습니다. 16 진수 모드에서 543을 입력하고 "And"버튼을 클릭 한 다음 센서 마스크 (1, 2, 4, 8, 10, ...)를 입력하십시오. 결과가 센서 마스크 (1, 2, 4, 8, 10, ...)와 같으면이 데이터가 포함됩니다. 그러나 C#에서이를 달성하는 방법을 모르겠습니다.
이 내 이상적이지만 나에게 오류를 준 : 운영자 '는 &'형식의 피연산자에 적용 할 수 없습니다 '바이트 []'와 '바이트 []'
int[] sensorMaskList = new int[length] {1, 2, 4, 8,... };
internal List<int> GetSelectedData(byte[] byteMask)
{
List<int> lstDataIndex = new List<int>();
for (int i = 0; i < sensorMaskList.Length; i++)
{
byte[] mask = BitConverter.GetBytes(sensorMaskList[i]);
if (mask & byteMask == mask)
lstDataIndex.Add(i);
}
return lstDataIndex;
}
사람이 좀 이상을 제공 할 수 있습니다. 나쁜 영어
쉽게 수행하고 작동하는
BitArray
클래스를 사용할 수 있습니다
배열에서 bitwise & -operator를 사용하려고합니다. 너는 그렇게 할 수 없다. 배열의 각 요소를 반복하고 요소 자체에서 연산자를 사용해야합니다. 나는. 'byte []'가 아닌'byte'에 & 연산자를 사용하십시오. –
예, 알고 있지만, 제 경우에는 값이 543과 100처럼 바이트가 저장할 수있는 값보다 크므로 배열에 저장해야합니다. 그것은 전체 배열 대신 각 바이트에 비트 & & - 연산자를 사용하면 올바른 것인가? – user1728585
예, 비트 연산이 - 단어가 말한대로 - 수행하지 않고 비트 단위로 수행했기 때문입니다. '&'는'+'가 아닙니다! –