OriginalGriff
Когда вы находите код в интернете на одном языке и пытаетесь использовать его на другом, вы должны понимать три вещи:
1) исходный язык - в данном случае C или C++
2) Язык назначения - в данном случае C#
3) Что делает код и как он это делает.
C и C++ очень похожи на C# (понятно, что C# сильно повлиял на них, когда он был разработан), но это очень, очень разные языки, которые имеют некоторый общий синтаксис. Вы не можете просто поднять код C и предположить, что он будет работать без изменений в C#!
В этом случае C не имеет понятия булевых значений - нет true
или false
Вместо этого он рассматривает любое ненулевое значение как истинное, а любое нулевое значение-как ложное. В C# есть логические значения и обеспечивает их использование.
Итак, это:
if (crc_register & 0x0001)
нужно что-то менять на это:
if ((crc_register & 0x0001) != 0)
Но... вы не можете ожидать, что код, даже когда он компилируется, будет работать точно так же, как оригинал, если вы не выполните все три вышеперечисленных условия!