在C#中使用十六进制文字将整数设置为负值

时间:2010-01-22 21:07:23

标签: c# hex integer

有没有办法在C#中使用十六进制文字将int设置为负值?我检查了Integer literals上的规范,但没有提到任何内容。

例如:

int a = -1;         // Allowed
int b = 0xFFFFFFFF; // Not allowed?

我的应用程序的十六进制表示法更清晰,我不想使用uint,因为我需要做一些额外的转换。

5 个答案:

答案 0 :(得分:25)

使用未经检查的关键字。

unchecked
{
   int b = (int)0xFFFFFFFF;    
}

甚至更短

int b = unchecked((int)0xFFFFFFFF);

答案 1 :(得分:1)

我认为您可以将-0x1与c#

一起使用

答案 2 :(得分:1)

你必须将它投射并放在未经检查的环境中。

unchecked {
    int i = (int)0xFFFFFFFF;
}

答案 3 :(得分:1)

这将在没有未经检查的操作或强制转换的情况下完成工作。

int i = 0xFF << 24 | 0xFF << 16 | 0xFF << 8 | 0xFF;

答案 4 :(得分:0)

您可以使用“转换”类:

string hex = "FF7F";
int myInt = Convert.ToInt32(hex, 16);