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

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

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

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

byte[] pcBlock

. Также компилятору не нравится

while (len--)

- неявное преобразование в bool. В принципе, как это обойти вроде придумал, а вот что делать

crc = (crc << 8) ^ Crc16Table[(crc >> 8) ^ *pcBlock++];

- не понимаю Ругается на неявное преобразование int в ushort. Подскажите, как правильно переписать реализацию.

Решение задачи: «Преобразование типов»

textual
Листинг программы
  1.         static ushort Crc16(byte[] pcBlock)
  2.         {
  3.             ushort crc = 0xFFFF;
  4.  
  5.             for (int i = 0; i < pcBlock.Length; i++)
  6.             {
  7.                 int index = (crc >> 8) ^ pcBlock[i];
  8.                 crc = (ushort)((crc << 8) ^ Crc16Table[index]);
  9.             }
  10.  
  11.             return crc;
  12.         }

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


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

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

10   голосов , оценка 3.4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы