6비트 0x43 CRC를 구하는 C 코드는 다음과 같다.
uint8_t tableCRC6[64] = {
0x00, 0x03, 0x06, 0x05, 0x0C, 0x0F, 0x0A, 0x09,
0x18, 0x1B, 0x1E, 0x1D, 0x14, 0x17, 0x12, 0x11,
0x30, 0x33, 0x36, 0x35, 0x3C, 0x3F, 0x3A, 0x39,
0x28, 0x2B, 0x2E, 0x2D, 0x24, 0x27, 0x22, 0x21,
0x23, 0x20, 0x25, 0x26, 0x2F, 0x2C, 0x29, 0x2A,
0x3B, 0x38, 0x3D, 0x3E, 0x37, 0x34, 0x31, 0x32,
0x13, 0x10, 0x15, 0x16, 0x1F, 0x1C, 0x19, 0x1A,
0x0B, 0x08, 0x0D, 0x0E, 0x07, 0x04, 0x01, 0x02};
/*32-bit input data, right alignment, Calculation over 24 bits (mult. of 6) */
uint8_t CRC_BiSS_43_24bit (uint32_t w_InputData)
{
uint8_t b_Index = 0;
uint8_t b_CRC = 0;
b_Index = (uint8_t )(((uint32_t)w_InputData >> 18u) & 0x0000003Fu);
b_CRC = (uint8_t )(((uint32_t)w_InputData >> 12u) & 0x0000003Fu);
b_Index = b_CRC ^ ab_CRC6_LUT[b_Index];
b_CRC = (uint8_t )(((uint32_t)w_InputData >> 6u) & 0x0000003Fu);
b_Index = b_CRC ^ ab_CRC6_LUT[b_Index];
b_CRC = (uint8_t )((uint32_t)w_InputData & 0x0000003Fu);
b_Index = b_CRC ^ ab_CRC6_LUT[b_Index];
b_CRC = ab_CRC6_LUT[b_Index];
return b_CRC;
}
/*64-bit input data, right alignment, Calculation over 42 bits (mult. of 6) */
uint8_t CRC_BiSS_43_42bit(uint64_t dw_InputData)
{
uint8_t b_Index = 0;
uint8_t b_CRC = 0;
b_Index = (uint8_t)((dw_InputData >> 36u) & (uint64_t)0x00000003Fu);
b_CRC = (uint8_t)((dw_InputData >> 30u) & (uint64_t)0x0000003Fu);
b_Index = b_CRC ^ ab_CRC6_LUT[b_Index];
b_CRC = (uint8_t)((dw_InputData >> 24u) & (uint64_t)0x0000003Fu);
b_Index = b_CRC ^ ab_CRC6_LUT[b_Index];
b_CRC = (uint8_t)((dw_InputData >> 18u) & (uint64_t)0x0000003Fu);
b_Index = b_CRC ^ ab_CRC6_LUT[b_Index];
b_CRC = (uint8_t)((dw_InputData >> 12u) & (uint64_t)0x0000003Fu);
b_Index = b_CRC ^ ab_CRC6_LUT[b_Index];
b_CRC = (uint8_t)((dw_InputData >> 6u) & (uint64_t)0x0000003Fu);
b_Index = b_CRC ^ ab_CRC6_LUT[b_Index];
b_CRC = (uint8_t)(dw_InputData & (uint64_t)0x0000003Fu);
b_Index = b_CRC ^ ab_CRC6_LUT[b_Index];
b_CRC = ab_CRC6_LUT[b_Index];
return b_CRC;
}
'컴퓨터 > 프로그래밍' 카테고리의 다른 글
Visual Studio Code 자동 괄호 해제 (0) | 2023.03.11 |
---|---|
사인 테이블 프로그래밍 (0) | 2023.01.12 |
MFC 사용을 위한 Visual Studio 설치 (0) | 2023.01.04 |
추상 데이터 타입 (ADT) 뜻 (0) | 2022.12.24 |
정적할당, 동적할당, 자동할당 차이 (0) | 2022.10.20 |
댓글