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