C #: Comment convertir long en ulong

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.