2010-01-22 8 views
18

¿Hay alguna manera de establecer un valor negativo de int utilizando un literal hexadecimal en C#? Revisé la especificación en Integer literals pero no mencionó nada.Configuración de entradas a valores negativos utilizando literales hexadecimales en C#

Por ejemplo:

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

La notación hexadecimal es más claro para mi aplicación, y yo preferiría no usar uint s debido a que tendría que hacer algo de fundición adicional.

+2

echar un vistazo aquí: http://stackoverflow.com/questions/319993/c-hexadecimal-notation-and-signed-integers –

Respuesta

22

utilizar la palabra clave sin marcar.

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

o incluso más corto

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

Creo que se puede utilizar -0x1 con C#

+1

Sí, esto es una sintaxis válida, pero que tiene que ver la negación en mi La cabeza para descubrir cuál es el valor real es un poco tedioso. –

0

Puede utilizar la clase "Convertir":

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

Hay que echarlo y ponerlo en un contexto sin marcar.

unchecked { 
    int i = (int)0xFFFFFFFF; 
} 
1

Esto hará el trabajo sin operaciones no controladas o de fundición.

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