Long을 Int로 변환 할 수 있습니까?
-
21-08-2019 - |
문제
나는 변환하고 싶다 long
에게 int
.
값의 경우 long
> int.MaxValue
, 나는 그것을 감싸게되어 기쁘다.
가장 좋은 방법은 무엇입니까?
해결책
그냥 해 (int)myLongValue
. 그것은 당신이 원하는 것을 정확하게 수행합니다 (MSB를 버리고 LSB를 복용) unchecked
컨텍스트 (컴파일러 기본값). 던질거야 OverflowException
안에 checked
값이 값에 맞지 않으면 컨텍스트 int
:
int myIntValue = unchecked((int)myLongValue);
다른 팁
Convert.ToInt32(myValue);
INT.MaxValue보다 클 때 그것이 무엇을할지 모르겠지만.
때때로 당신은 실제로 실제 가치에 관심이 없지만 체크섬/해시 코드. 이 경우 내장 방법입니다 GetHashCode()
좋은 선택입니다 :
int checkSumAsInt32 = checkSumAsIn64.GetHashCode();
안전하고 빠른 방법은 캐스트 전에 비트 마스킹을 사용하는 것입니다 ...
int MyInt = (int) ( MyLong & 0xFFFFFFFF )
비트 마스크 ( 0xFFFFFFFF
) int 크기가 기계에 의존하기 때문에 값은 int의 크기에 따라 다릅니다.
그렇지 않을 것입니다
(int) Math.Min(Int32.MaxValue, longValue)
수학적으로 말하는 올바른 방법이 되십시오.
제휴하지 않습니다 StackOverflow