Как корректно записать Cardinal из Delphi (он же unsigned int из C++) в C#?
Есть строка из delphi:
var Mask: Cardinal;
Mask := -(Result and 1);
Result := (Result shr 1) xor (Mask and $FF242143);
При написании её в C#:
uint mask;
uint result = 0;
mask = -(result & 1);
result = (result>>1) ^ (mask & 0xFF242143);
Выводит ошибку:
Не удается неявно преобразовать тип "long" в "uint". Существует явное преобразование (возможно, пропущено приведение типов)
Источник: Stack Overflow на русском