2009-08-07 26 views
8

Estoy realmente perplejo en este caso. En C# hay un formato de representación de las constantes hexadecimales de la siguiente manera:Representación de las constantes binarias C#

int a = 0xAF2323F5; 

hay un formato de representación binaria constantes?

+0

¿Qué quieres decir? const int a = 2938315765; – Paco

+1

Gracias, supongo que su resultado es correcto, pero estaba buscando una solución sistemática. ¿Debo publicar una pregunta o stackoverflow para cada constante binaria que necesito convertir? –

+0

.. por ejemplo 10110011 –

Respuesta

3

A partir de C# 7 puede representar un valor literal binario en código:

private static void BinaryLiteralsFeature() 
{ 
    var employeeNumber = 0b00100010; //binary equivalent of whole number 34. Underlying data type defaults to System.Int32 
    Console.WriteLine(employeeNumber); //prints 34 on console. 
    long empNumberWithLongBackingType = 0b00100010; //here backing data type is long (System.Int64) 
    Console.WriteLine(empNumberWithLongBackingType); //prints 34 on console. 
    int employeeNumber_WithCapitalPrefix = 0B00100010; //0b and 0B prefixes are equivalent. 
    Console.WriteLine(employeeNumber_WithCapitalPrefix); //prints 34 on console. 
} 

Más información se puede encontrar here.

9

No, no hay literales binarios en C#. Por supuesto, puede analizar una cadena en formato binario utilizando Convert.ToInt32, pero no creo que sea una gran solución.

int bin = Convert.ToInt32("1010", 2); 
+0

Dejaré la pregunta abierta durante unas horas, pero siendo esta la primera respuesta, si es cierta, se elegirá como la respuesta oficial. Gracias. –

+2

Es cierto ... bien podría aceptar ahora. –

+0

Es cierto, eso funciona, y es útil en la mayoría de los casos. Lamentablemente, no funciona si lo está usando en un 'switch (myVariable) {case bin: Console.WriteLine (" value detected "); descanso; } 'instrucción, ya que' case' solo permite constantes. – Matt

2

Usted podría utilizar un método de extensión:

public static int ToBinary(this string binary) 
{ 
    return Convert.ToInt32(binary, 2); 
} 

Sin embargo, si esto es conveniente que voy a dejar hasta que (dado el hecho de que funcionará en cualquier cadena).

0

Desde Visual Studio 2017, se admiten literales binarios como 0b00001.

+0

¿Es esto una repetición de [esta respuesta existente] (https://stackoverflow.com/a/41193863)? – Pang

+0

lo siento, pero quiero darme cuenta de que el VS 2017 recientemente lanzado es compatible con dicho uso, espero que esto ayude. – Xiaoyuvax