How many "("s can you find in:
Q: Переделать функцию с С++ на C# Есть функция подсчета Crc8, которая написана на C++ и эту функцию мне нужно перенести на C# 
Вот сама функция: 
uint8_t Crc8(unsigned char *pcBlock, unsigned int len)
{
    unsigned char crc = 0xFF;
    unsigned int i;

    while (len--)
    {
        crc ^= *pcBlock++;

        for (i = 0; i < 8; i++) {
            crc = crc & 0x80 ? (crc << 1) ^ 0x9B : crc << 1;
        }
    }
    return crc;
}

Начал я писать на С# и столкнулся с проблемой:
unsafe char Crc8(char* pcBlock, uint len)
{
    ushort crc = 0xFF;
    ushort i;

    while(Convert.ToBoolean(len))
    {
        crc ^= *pcBlock;

        for (i = 0; i < 8; i++)
            crc = crc & 0x80 ? (crc << 1) ^ 0x9B : crc << 1;
    }
}

Он не понимает строку: 
crc = crc & 0x80 ? (crc << 1) ^ 0x9B : crc << 1;

Пишет ошибку: 
Не удается неявно преобразовать тип "int" в "bool" 
Я пытался переконвертировать, но не получилось

A: Ну всё верно, первый операнд тернарного оператора должен иметь тип bool, у вас же там число, надо писать явно (crc & 0x80) != 0
Но вообще тут куча проблем. На самом деле вам необходимо разобраться как работает этот алгоритм и переписать его в безопасном стиле, без использования указателей.

A: вместо crc = crc & 0x80 ? (crc << 1) ^ 0x9B : crc << 1; 
if(crc & 0x80){
crc = ((crc << 1) ^ 0x9B);
}else
{
crc << 1;
}

я если что в c# нуб полный, но вроде так дожно прокатить

user
The given text has fifteen "("s.
assistant