Si j'essaie avec BitConverter, il nécessite un tableau d'octets et je n'ai pas cela.J'ai un Int32 et je veux le convertir en UInt32.C#: Comment convertir long en ulong
En C++ il n'y avait aucun problème avec cela.
Si j'essaie avec BitConverter, il nécessite un tableau d'octets et je n'ai pas cela.J'ai un Int32 et je veux le convertir en UInt32.C#: Comment convertir long en ulong
En C++ il n'y avait aucun problème avec cela.
Une distribution simple est tout ce dont vous avez besoin. Comme il est possible de perdre la précision en faisant cela, la conversion est explicite.
long x = 10;
ulong y = (ulong)x;
N'est-ce pas possible de déborder avec de gros négatifs? Vous pouvez utiliser 'unchecked' pour tronquer à la place: http://msdn.microsoft.com/fr-fr/library/a569z7k8(VS.71).aspx –
Pour convertir une longue à un ulong, il suffit de jeter:
long a;
ulong b = (ulong)a;
C# ne jetterai pas une exception si elle est un nombre négatif.
Je ne crois pas que cela déclenche une exception avec une valeur négative, mais ne sera pas ce que vous attendez ... ne pas avoir .net ici (ordinateur portable), ou le testerait. – Tracker1
Ce ne sera pas le cas, mais le premier bit sera interprété comme le bit le plus significatif au lieu du bit de signe. – DuneCat
Il ne lancera pas. Vous devriez envisager de réviser votre réponse, sinon cela pourrait être trompeur. – KFL
Essayez:
Convert.ToUInt32()
Int32 i = 17;
UInt32 j = (UInt32)i;
EDIT: question ne sait pas si vous avez une longue ou un int?
Je pense que John se réfère à "vieux" longs en C ou C++ qui avaient 32 bits de large. –
question dit C#? –
Je voulais dire qu'il l'a mentionné par habitude. –
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.
Un peu confus de ce que vous demandez ici: buddy - longs, tableaux d'octets, et ints - pouvez-vous élaborer? – Chris