Преобразование типов - C# (179136)
Формулировка задачи:
Всем привет.
Переношу код из сишной реализации в проект на C#. Есть функция подсчета CRC, при ее переносе компилятор выдает ошибки.
Указатель pcBlock - это указатель на массив с данными, для которых высчитывается CRC. Если правильно понимаю, то это можно заменить на
ushort Crc16(uint8_t * pcBlock, ushort len) { ushort crc = 0xFFFF; while (len--) crc = (crc << 8) ^ Crc16Table[(crc >> 8) ^ *pcBlock++]; return crc; }
byte[] pcBlock
. Также компилятору не нравитсяwhile (len--)
- неявное преобразование в bool. В принципе, как это обойти вроде придумал, а вот что делатьcrc = (crc << 8) ^ Crc16Table[(crc >> 8) ^ *pcBlock++];
- не понимаю Ругается на неявное преобразование int в ushort. Подскажите, как правильно переписать реализацию.Решение задачи: «Преобразование типов»
textual
Листинг программы
static ushort Crc16(byte[] pcBlock) { ushort crc = 0xFFFF; for (int i = 0; i < pcBlock.Length; i++) { int index = (crc >> 8) ^ pcBlock[i]; crc = (ushort)((crc << 8) ^ Crc16Table[index]); } return crc; }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д