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

Posted

技术标签:

【中文标题】在 C# 中使用十六进制文字将整数设置为负值【英文标题】:Setting ints to negative values using hexadecimal literals in C# 【发布时间】:2011-01-08 09:30:19 【问题描述】:

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

例如:

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

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

【问题讨论】:

看这里:***.com/questions/319993/… Hexadecimal notation and signed integers in C#的可能重复 【参考方案1】:

使用未选中的关键字。

unchecked

   int b = (int)0xFFFFFFFF;    

甚至更短

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

【讨论】:

【参考方案2】:

我认为你可以在 c# 中使用-0x1

【讨论】:

是的,这是有效的语法,但必须在脑海中进行否定以找出真正的值是什么有点乏味。【参考方案3】:

您必须将其强制转换并将其置于未经检查的上下文中。

unchecked 
    int i = (int)0xFFFFFFFF;

【讨论】:

【参考方案4】:

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

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

【讨论】:

【参考方案5】:

您可以使用“转换”类:

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

【讨论】:

以上是关于在 C# 中使用十六进制文字将整数设置为负值的主要内容,如果未能解决你的问题,请参考以下文章