try - string to int c# unity
¿Puedo convertir long a int? (4)
A veces no está realmente interesado en el valor real, sino en su uso como suma de comprobación / código hash . En este caso, el método incorporado GetHashCode()
es una buena opción:
int checkSumAsInt32 = checkSumAsIn64.GetHashCode();
Quiero convertir long
a int
.
Si el valor de long
> int.MaxValue
, estoy contento de dejarlo funcionar.
¿Cuál es la mejor manera?
La forma más segura y rápida es usar el enmascaramiento de bits antes del lanzamiento ...
int MyInt = (int) ( MyLong & 0xFFFFFFFF )
El valor de Máscara de bit ( 0xFFFFFFFF
) dependerá del tamaño de Int porque el tamaño de Int depende de la máquina.
Solo haz (int)myLongValue
. Hará exactamente lo que quiera (descartando MSBs y tomando LSB) en contexto unchecked
(que es el compilador predeterminado). Lanzará OverflowException
en un contexto checked
si el valor no cabe en un int
:
int myIntValue = unchecked((int)myLongValue);
Convert.ToInt32(myValue);
Aunque no sé lo que hará cuando sea mayor que int.MaxValue.