C#:如何将long转换为ulong

Iva*_*nov 10 c# ulong long-integer

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

在C++中没有问题.

Mat*_*nik 21

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

long x = 10;
ulong y = (ulong)x;
Run Code Online (Sandbox Code Playgroud)

  • 难道这不可能溢出大的负面影响吗?您可以使用`unchecked`来截断:http://msdn.microsoft.com/en-us/library/a569z7k8(VS.71).aspx (7认同)

int*_*dis 5

鉴于此功能:

string test(long vLong)
{
    ulong vULong = (ulong)vLong;
    return string.Format("long hex: {0:X}, ulong hex: {1:X}", vLong, vULong);
}
Run Code Online (Sandbox Code Playgroud)

而这种用法:

    string t1 = test(Int64.MinValue);
    string t2 = test(Int64.MinValue + 1L);
    string t3 = test(-1L);
    string t4 = test(-2L);
Run Code Online (Sandbox Code Playgroud)

这将是结果:

    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"
Run Code Online (Sandbox Code Playgroud)

如您所见,即使对于负值,位也被完全保留。