在C#中将'uint'类型转换为'int'

时间:2011-03-24 11:35:08

标签: c#

我正在尝试将int分配给十六进制数。 const int a = 0xFFFFFFF0; 我收到一个错误:无法隐式转换类型'uint'。显式转换exsist(您是否错过了演员?) 有人知道如何解决它吗? TNX

5 个答案:

答案 0 :(得分:12)

    const int a = unchecked((int)0xFFFFFFF0);

或更简单:

    const int a = -16;

答案 1 :(得分:2)

使用

const uint a = 0xFFFFFFF0

- )

背景:0xFFFFFFF0太大,无法容纳int,从 - 2,147,483,648到2,147,483,647,其中uint从0变为4,294,967,295,刚好高于{{ 1}}(= 4,294,967,280)。

答案 2 :(得分:1)

Int32.MaxValue为0x7FFFFFFF。我猜c#在分配之前试图将您尝试分配的值转换为uint(可以容纳它)

答案 3 :(得分:0)

将0xFFFFFFF0变量存储到uint中,因为它太大而无法放入int

答案 4 :(得分:0)

有另一种方法可以在不使用未选中关键字的情况下进行转换:

uint ui = 0xFFFFFFFF;

int ii = System.BitConverter.ToInt32(BitConverter.GetBytes(ui),0);// this is -1