У меня есть следующий код на C для вычисления CRC16-USB для некоторых потоков данных:
uint16_t DRV_CANFDSPI_CalculateCRC16(uint8_t* data, uint16_t size)
{
uint16_t init = CRCBASE;
uint8_t index;
while (size-- != 0) {
index = ((uint8_t*) & init)[1] ^ *data++;
init = (init << 8) ^ crc16_table[index];
}
return init;
}
Где crc16_table - это массив некоторых шестнадцатеричных значений в 2 байта (например, 0xAFF3), а data - это массив шестнадцатеричных значений в 1 байт (например, 0xA3), представляющих данные поток (полученный другими средствами). Размер - длина массива data .
Я хочу воспроизвести этот фрагмент кода на Python, но я не знаю, что означает это утверждение:
index = ((uint8_t*) & init)[1] ^ *data++;
Я хотел бы понять, что означает и делает это утверждение, поэтому я могу воспроизвести его на Python. Я не эксперт в C, но у меня есть некоторые знания, и я в основном понимаю остальную часть кода, но эта строка вызывает у меня головную боль.
Спасибо и хорошего дня!