Question

Si j'essaye avec BitConverter, il nécessite un tableau d'octets et je n'ai pas that.I ont un Int32 et je veux le convertir en UInt32.

En C ++ il n'y avait pas de problème avec ça.

Était-ce utile?

La solution

Un casting est simple tout ce que vous avez besoin. Comme il est possible de perdre la précision faire, la conversion est explicite.

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

Autres conseils

Essayez:

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

EDIT: question ne sait pas si vous avez une longue ou un int

Compte tenu de cette fonction:

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

Et cet usage:

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

Ce sera le résultat:

    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"

Comme vous pouvez le voir les bits sont conservés complètement, même pour les valeurs négatives.

Pour convertir une longue à un ulong, il suffit de le lancer:

long a;
ulong b = (ulong)a;

C # ne jetterai pas une exception si elle est un nombre négatif.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top