Si j’essaie avec BitConverter, il nécessite un tableau d’octets et je n’ai pas ça. J’ai un Int32 et je veux le convertir en UInt32.
En C ++, cela ne posait aucun problème.
Un simple casting est tout ce dont vous avez besoin. Comme il est possible de perdre de la précision, la conversion est explicite.
long x = 10; ulong y = (ulong)x;
Essayer:
Convert.ToUInt32()
Int32 i = 17; UInt32 j = (UInt32)i;
EDIT: la question n’est pas claire si vous avez un long ou un int?
Étant donné cette fonction:
ssortingng test(long vLong) { ulong vULong = (ulong)vLong; return ssortingng.Format("long hex: {0:X}, ulong hex: {1:X}", vLong, vULong); }
Et cet usage:
ssortingng t1 = test(Int64.MinValue); ssortingng t2 = test(Int64.MinValue + 1L); ssortingng t3 = test(-1L); ssortingng 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 constater, les bits sont entièrement conservés, même pour les valeurs négatives.
Pour convertir un long en ulong, lancez-le simplement:
long a; ulong b = (ulong)a;
C # NE lancera PAS une exception s’il s’agit d’un nombre négatif.