C #: Come convertire lungo per ulong
-
22-08-2019 - |
Domanda
Se provo con BitConverter, richiede un array di byte e non ho that.I hanno un Int32 e voglio convertirlo in UInt32.
In C ++ non c'era nessun problema con questo.
Soluzione
Un semplice cast è tutto ciò che serve. Dal momento che è possibile perdere di precisione fare questo, la conversione è esplicito.
long x = 10;
ulong y = (ulong)x;
Altri suggerimenti
Prova:
Convert.ToUInt32()
Int32 i = 17;
UInt32 j = (UInt32)i;
EDIT:? Domanda è chiaro se si dispone di un lungo o un int
Data questa funzione:
string test(long vLong)
{
ulong vULong = (ulong)vLong;
return string.Format("long hex: {0:X}, ulong hex: {1:X}", vLong, vULong);
}
E questo utilizzo:
string t1 = test(Int64.MinValue);
string t2 = test(Int64.MinValue + 1L);
string t3 = test(-1L);
string t4 = test(-2L);
Questo sarà il risultato:
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"
Come si può vedere i bit sono conservati completamente, anche per i valori negativi.
Per convertire un lungo per un ulong, è sufficiente lanciarlo:
long a;
ulong b = (ulong)a;
C # NON un'eccezione se si tratta di un numero negativo.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow