4 ответов:
просто делать
(int)myLongValue. Он будет делать именно то, что вы хотите (отбрасывая MSBs и принимая LSBs) вuncheckedконтекст (который является компилятором по умолчанию). Это будет бросатьOverflowExceptionнаcheckedконтекст, если значение не помещается в элементеint:int myIntValue = unchecked((int)myLongValue);
иногда вы на самом деле не заинтересованы в реальной стоимости, но в его использовании как контрольную сумму/хэш-код. В этом случае, встроенный метод
GetHashCode()хороший выбор:int checkSumAsInt32 = checkSumAsIn64.GetHashCode();
безопасный и самый быстрый способ использовать бит маскируя перед бросанием...
int MyInt = (int) ( MyLong & 0xFFFFFFFF )Битовая Маска (
0xFFFFFFFF) значение будет зависеть от размера Int, потому что размер Int зависит от машины.
Comments