Мне очень любопытно, что я наблюдал во время разработки своего приложения.Короче говоря, я делал приложение, которое считывает данные с интеллектуальных электросчетчиков.У них есть кадр запроса, например:
7E [hex-address] [crc1] [cmd] [crc2] 7E
Алгоритм CRC равен CRC-16 / X-25, и они должны рассчитываться для всей левой части кадра без 7e
, поэтому crc2
включает crc1
.Я заметил, что все время crc2
одинаково для любого cmd
, даже с разными hex-address
.Я использовал crccalc инструмент для обеспечения.Шаги для воспроизведения:
- положить любой (даже любой размер) шестнадцатеричный массив
- calc CRC-16 / X-25
- поменять местами байты CRC
- поместите этот замененный CRC в конец массива
- снова вычислите CRC
Этот CRC будет одинаковым для любого байтового массива.Почему так?Есть ли какое-нибудь название для этого явления?