2009-08-07 12 views
8

Sono davvero inciampato su questo. In C# c'è un formato di rappresentazione costanti esadecimali, come di seguito:Rappresentazione delle costanti binarie C#

int a = 0xAF2323F5; 

c'è un costanti formato di rappresentazione binaria?

+0

Cosa intendi? const int a = 2938315765; – Paco

+1

Grazie, immagino che il tuo risultato sia corretto ma stavo cercando una soluzione sistematica. Devo pubblicare una domanda o stackoverflow per ogni costante binaria che devo convertire? –

+0

.. ad esempio 10110011 –

risposta

3

Come di C# 7 è possibile rappresentare un valore letterale binario in codice:

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. 
} 

Ulteriori informazioni possono essere trovate here.

9

No, nessun valore letterale binario in C#. Ovviamente è possibile analizzare una stringa in formato binario utilizzando Convert.ToInt32, ma non penso che sarebbe un'ottima soluzione.

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

Lascerò la domanda aperta per alcune ore ma questa è la prima risposta, se è vera, verrà scelta come risposta ufficiale. Grazie. –

+2

È vero ... potrebbe anche accettarlo ora. –

+0

È vero, funziona, ed è utile nella maggior parte dei casi. Sfortunatamente non funziona se lo stai usando in un 'switch (myVariable) {case bin: Console.WriteLine (" valore rilevato "); rompere; } istruzione, poiché 'case' consente solo le costanti. – Matt

2

Si potrebbe utilizzare un metodo di estensione:

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

Tuttavia, se questo è saggio lascio a voi (in considerazione del fatto che opererà su qualsiasi stringa).

0

Da Visual Studio 2017 sono supportati valori letterali binari come 0b00001.

+0

Si tratta di una ripetizione di [questa risposta esistente] (https://stackoverflow.com/a/41193863)? – Pang

+0

scusate, ma voglio capire che il VS 2017 appena rilasciato supporta questo tipo di utilizzo, speriamo che questo aiuti. – Xiaoyuvax