Pregunta

Si trato con BitConverter, se requiere una matriz de bytes y no tienen that.I tiene un Int32 y quiero convertirlo en UInt32.

En C ++ no había ningún problema con eso.

¿Fue útil?

Solución

Un molde simple es todo lo que necesita. Puesto que es posible perder la precisión de hacer esto, la conversión es explícita.

long x = 10;
ulong y = (ulong)x;

Otros consejos

Probar:

Convert.ToUInt32()
Int32 i = 17;
UInt32 j = (UInt32)i;

EDIT:? Pregunta es claro si usted tiene un largo o un int

Teniendo en cuenta esta función:

string test(long vLong)
{
    ulong vULong = (ulong)vLong;
    return string.Format("long hex: {0:X}, ulong hex: {1:X}", vLong, vULong);
}

Y este uso:

    string t1 = test(Int64.MinValue);
    string t2 = test(Int64.MinValue + 1L);
    string t3 = test(-1L);
    string t4 = test(-2L);

Este será el resultado:

    t1 == "long hex: 8000000000000000, ulong hex: 8000000000000000"
    t2 == "long hex: 8000000000000001, ulong hex: 8000000000000001"
    t3 == "long hex: FFFFFFFFFFFFFFFF, ulong hex: FFFFFFFFFFFFFFFF"
    t4 == "long hex: FFFFFFFFFFFFFFFE, ulong hex: FFFFFFFFFFFFFFFE"

Como se puede ver los bits se conservan por completo, incluso para valores negativos.

Para convertir un largo a un ulong, simplemente echarlo:

long a;
ulong b = (ulong)a;

C # no será una excepción si se trata de un número negativo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top