有没有办法在C#中使用十六进制文字将int
设置为负值?我检查了Integer literals上的规范,但没有提到任何内容。
例如:
int a = -1; // Allowed
int b = 0xFFFFFFFF; // Not allowed?
我的应用程序的十六进制表示法更清晰,我不想使用uint
,因为我需要做一些额外的转换。
答案 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);