11 votes

C# : Comment convertir un long en ulong

Si j'essaie avec BitConverter, il faut un tableau d'octets et je n'en ai pas. J'ai un Int32 et je veux le convertir en UInt32.

En C++, cela ne posait aucun problème.

23voto

Matt Olenik Points 2970

Un simple moulage est tout ce dont vous avez besoin. Comme il est possible de perdre de la précision en faisant cela, la conversion est explicite.

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

7voto

SirDemon Points 1246

Essayez :

Convert.ToUInt32()

6voto

Chris Nash Points 545

Étant donné cette fonction :

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

Et cette utilisation :

    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 constater, les bits sont entièrement préservés, même pour les valeurs négatives.

2voto

Chris Points 13472

Pour convertir un long en ulong, il suffit de le couler :

long a;
ulong b = (ulong)a;

Le C# ne lèvera PAS d'exception s'il s'agit d'un nombre négatif.

1voto

Mitch Wheat Points 169614
Int32 i = 17;
UInt32 j = (UInt32)i;

EDIT : la question n'est pas claire si vous avez un long ou un int ?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X