CRC 16 бит (полином 0x1021) Расчет CCITT с начальным значением 0x0000C#

Место общения программистов C#
Ответить
Anonymous
 CRC 16 бит (полином 0x1021) Расчет CCITT с начальным значением 0x0000

Сообщение Anonymous »

Ну, я чешу голову и очень близок к тому, чтобы разбить ее молотком. Я пытаюсь вычислить бит CRC16 CCITT, но это не дает мне того, что должно. Я обыскал почти все и не знаю, чего мне не хватает.

Это полный пакет с последними двумя байтами расчета CRC


54 A1 4A 03 E7 03 D4 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 64 CA


на данный момент я добавляю байт синхронизации, который равен 0x54, если я не добавляю байт синхронизации, пакет будет


54 A1 4A 03 E7 03 D4 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 65 CF


оба значения CRC (64 CA и& 65 CF) неверны. Я должен был получить 72 DC и& 99 3F соответственно.

это код, который я использую для вычисления бита CRC16

Код: Выделить всё

private static ushort CRCCalc(byte[] data)
{
ushort wCRC = 0;
for (int i = 1; i < data.Length; i++)
{
wCRC = (ushort)(wCRC ^ (data[i] 

Подробнее здесь: [url]https://stackoverflow.com/questions/39961631/crc-16-bit-polynomial-0x1021-ccitt-calculation-with-initial-value-0x0000[/url]
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»