【发布时间】:2011-01-08 09:30:19
【问题描述】:
有没有办法在 C# 中使用十六进制文字将 int 设置为负值?我检查了Integer literals 上的规范,但没有提及任何内容。
例如:
int a = -1; // Allowed
int b = 0xFFFFFFFF; // Not allowed?
十六进制表示法对我的应用程序来说更清晰,我不想使用uints,因为我需要做一些额外的转换。
【问题讨论】:
有没有办法在 C# 中使用十六进制文字将 int 设置为负值?我检查了Integer literals 上的规范,但没有提及任何内容。
例如:
int a = -1; // Allowed
int b = 0xFFFFFFFF; // Not allowed?
十六进制表示法对我的应用程序来说更清晰,我不想使用uints,因为我需要做一些额外的转换。
【问题讨论】:
使用未选中的关键字。
unchecked
{
int b = (int)0xFFFFFFFF;
}
甚至更短
int b = unchecked((int)0xFFFFFFFF);
【讨论】:
我认为你可以在 c# 中使用-0x1
【讨论】:
您必须将其强制转换并将其置于未经检查的上下文中。
unchecked {
int i = (int)0xFFFFFFFF;
}
【讨论】:
这将在没有未经检查的操作或强制转换的情况下完成工作。
int i = 0xFF << 24 | 0xFF << 16 | 0xFF << 8 | 0xFF;
【讨论】:
您可以使用“转换”类:
string hex = "FF7F";
int myInt = Convert.ToInt32(hex, 16);
【讨论】: