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

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

例如:

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

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

【问题讨论】:

标签: c# hex integer


【解决方案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);
        

        【讨论】:

          猜你喜欢
          • 2014-11-30
          • 2019-04-30
          • 2012-08-04
          • 1970-01-01
          • 2020-04-07
          • 2011-12-10
          • 2017-08-12
          • 2015-02-11
          相关资源
          最近更新 更多