如果我使用BitConverter,它需要一个字节数组,而我没有。我有一个Int32,我想将其转换为UInt32。
在C++中,这没有问题。
在C++中,这没有问题。
只需要简单的强制类型转换,由于在这种情况下会丢失精度,所以转换必须是显式的。
long x = 10;
ulong y = (ulong)x;
unchecked
进行截断操作:http://msdn.microsoft.com/zh-cn/library/a569z7k8(VS.71).aspx - Josh Stodola考虑以下函数:
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"
正如您所见,位完全保留,即使对于负值也是如此。
尝试:
Convert.ToUInt32()
将 long 类型转换为 ulong 类型,只需要进行强制类型转换:
long a;
ulong b = (ulong)a;
C#不会在数字为负数时引发异常。
ulong b = unchecked((ulong)a)
。 - adrianmInt32 i = 17;
UInt32 j = (UInt32)i;
编辑:问题不清楚您是有一个长整型还是一个整型?