C#에서는 bool 유형의 16 개 변수가 포함 된 여러 개의 다른 구조체를 생성합니다. 이 구조체 중 몇 가지를 다른 구조체와 결합하여 다른 데이터 형식과 결합 할 것입니다. 길이가 2 바이트 인 것으로 처리해야합니다. I는 그것이 비록 0, 1 또는 2C# StructLayout Pack = ?? bool 값과 함께 사용하기
[StructLayout(LayoutKind.Sequential, Pack = 1)]
public struct CtrlWord1
{
public bool a1;
public bool a2;
public bool a3;
public bool a4;
public bool a5;
public bool a6;
public bool a7;
public bool a8;
public bool b1;
public bool b2;
public bool b3;
public bool b4;
public bool c1;
public bool c2;
public bool c3;
public bool c4;
}
패킹/레이아웃은 바이트 단위로 수행됩니다. 즉, 부울은 순전히 패킹에 의존하는 1 바이트 미만을 차지하지 않습니다. 두 개의 전용 바이트 필드와 해당 바이트 내 적절한 비트를 참조하는 여러 속성을 사용하는 것과 같이 좀 더 복잡한 작업을 수행해야합니다. –
[BitVector32] (https://msdn.microsoft.com/en-us/library/system.collections.specialized.bitvector32.aspx)를 사용하여 32 비트로 줄일 수 있습니다. 또는, http://stackoverflow.com/questions/4107039/bitarray-alternative-for-the-net-micro-framework/4107287#에 설명 된 기술을 사용할 수 있지만'long'보다는'ushort'를 사용하십시오. –