Подтвердить что ты не робот

Установка ints в отрицательные значения с использованием шестнадцатеричных литералов в С#

Можно ли установить int отрицательное значение, используя шестнадцатеричный литерал в С#? Я проверил спецификацию целые литеры, но ничего не сказал.

Например:

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

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

4b9b3361

Ответ 1

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

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

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

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

Ответ 2

Я думаю, вы можете использовать -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);