11

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

在 C++ 中,这没有问题。

4

5 回答 5

23

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

long x = 10;
ulong y = (ulong)x;
于 2009-03-27T05:40:37.123 回答
7

尝试:

Convert.ToUInt32()
于 2009-03-27T05:41:48.227 回答
5

鉴于此功能:

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"

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

于 2014-12-24T13:21:15.673 回答
2

要将 long 转换为 ulong,只需将其转换:

long a;
ulong b = (ulong)a;

如果它是负数,C# 不会抛出异常。

于 2009-03-27T05:41:15.357 回答
1
Int32 i = 17;
UInt32 j = (UInt32)i;

编辑:问题不清楚您是长整数还是整数?

于 2009-03-27T05:42:55.680 回答