Могу ли я конвертировать long в int?



Я хочу, чтобы преобразовать long до int.



, если значение long>int.MaxValue, Я рад, что это обернуть вокруг.



каков наилучший способ?

674   4  

4 ответов:

просто делать (int)myLongValue. Он будет делать именно то, что вы хотите (отбрасывая MSBs и принимая LSBs) в unchecked контекст (который является компилятором по умолчанию). Это будет бросать OverflowException на checked контекст, если значение не помещается в элементе int:

int myIntValue = unchecked((int)myLongValue);
Convert.ToInt32(myValue);

хотя я не знаю, что он будет делать, когда он больше, чем int.Максвелл.

иногда вы на самом деле не заинтересованы в реальной стоимости, но в его использовании как контрольную сумму/хэш-код. В этом случае, встроенный метод GetHashCode() хороший выбор:

int checkSumAsInt32 = checkSumAsIn64.GetHashCode();

безопасный и самый быстрый способ использовать бит маскируя перед бросанием...

int MyInt = (int) ( MyLong & 0xFFFFFFFF )

Битовая Маска ( 0xFFFFFFFF) значение будет зависеть от размера Int, потому что размер Int зависит от машины.

Comments

    Ничего не найдено.