C#:Как преобразовать long в ulong
-
22-08-2019 - |
Вопрос
Если я попытаюсь использовать BitConverter, для этого потребуется массив байтов, а у меня его нет.У меня есть Int32, и я хочу преобразовать его в UInt32.
В C ++ с этим не было никаких проблем.
Решение
Простой слепок - это все, что вам нужно.Поскольку при этом можно потерять точность, преобразование является явным.
long x = 10;
ulong y = (ulong)x;
Другие советы
Попробуй:
Convert.ToUInt32()
Int32 i = 17;
UInt32 j = (UInt32)i;
Редактировать:вопрос неясен, есть ли у вас long или int?
Учитывая эту функцию:
string test(long vLong)
{
ulong vULong = (ulong)vLong;
return string.Format("long hex: {0:X}, ulong hex: {1:X}", vLong, vULong);
}
И это использование:
string t1 = test(Int64.MinValue);
string t2 = test(Int64.MinValue + 1L);
string t3 = test(-1L);
string t4 = test(-2L);
Это и будет результатом:
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"
Как вы можете видеть, биты сохраняются полностью, даже для отрицательных значений.
Чтобы преобразовать long в ulong, просто приведите его:
long a;
ulong b = (ulong)a;
C # НЕ будет выдавать исключение, если это отрицательное число.
Не связан с StackOverflow