在 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?
十六进制表示法对我的应用程序来说更清晰,我不想使用uint
s,因为我需要做一些额外的转换。
【问题讨论】:
看这里:***.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# 中使用十六进制文字将整数设置为负值的主要内容,如果未能解决你的问题,请参考以下文章
在 Kotlin 中编写一个等于 Int.MIN_VALUE 的十六进制整数文字