Преобразование типов - C# (179136)

Узнай цену своей работы

Формулировка задачи:

Всем привет. Переношу код из сишной реализации в проект на C#. Есть функция подсчета CRC, при ее переносе компилятор выдает ошибки.
ushort Crc16(uint8_t * pcBlock, ushort len)
{
    ushort crc = 0xFFFF;
 
    while (len--)
        crc = (crc << 8) ^ Crc16Table[(crc >> 8) ^ *pcBlock++];
 
    return crc;
}
Указатель pcBlock - это указатель на массив с данными, для которых высчитывается 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;
        }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 3.4 из 5
Похожие ответы