Установка ints в отрицательные значения с использованием шестнадцатеричных литералов в C # - PullRequest
19 голосов
/ 23 января 2010

Есть ли способ установить int в отрицательное значение, используя шестнадцатеричный литерал в C #? Я проверил спецификацию на целочисленных литералах , но ничего не упоминалось.

Например:

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

Шестнадцатеричная запись более понятна для моего приложения, и я предпочел бы не использовать uint s, потому что мне нужно было бы выполнить дополнительное приведение.

Ответы [ 5 ]

25 голосов
/ 23 января 2010

Используйте ключевое слово unchecked.

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

или даже короче

int b = unchecked((int)0xFFFFFFFF);
1 голос
/ 18 июля 2013

Это выполнит работу без непроверенных операций или приведения.

int i = 0xFF << 24 | 0xFF << 16 | 0xFF << 8 | 0xFF;
1 голос
/ 23 января 2010

Вы должны разыграть его и поместить в непроверенный контекст.

unchecked {
    int i = (int)0xFFFFFFFF;
}
1 голос
/ 23 января 2010

Я думаю, вы можете использовать -0x1 с C #

0 голосов
/ 23 января 2010

Вы можете использовать класс «Преобразование»:

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