C#:如何将long转换为ulong

如果我尝试使用BitConverter,它需要一个字节数组,我没有。我有一个Int32,我想将其转换为UInt32。

在C ++中没有问题。

您只需要一个简单的演员表。 由于这样做可能会失去精确度,因此转换是明确的。

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

尝试:

 Convert.ToUInt32() 
 Int32 i = 17; UInt32 j = (UInt32)i; 

编辑:问题是不清楚你有长期还是国际?

鉴于此function:

 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#不会抛出exception。