8
votes

C # Représentation des constantes binaires

Je suis vraiment excité sur celui-ci. En C #, il existe un format de représentation des constantes hexadécimales comme ci-dessous:

int a = 0xAF2323F5;


5 commentaires

Que veux-tu dire? const int a = 2938315765;


Merci, je suppose que votre résultat est correct mais je cherchais une solution systématique. Devrais-je poster une question o Stackoverflow pour chaque constante binaire que j'ai besoin de convertir?


Ceci est une dupe de Stackoverflow.com/questions/594720/C-Binary-Literranles


Bon pointeur, je ne savais pas à chercher "littéral" bien que je devrais. Peut-être que Jeff était juste à propos de la recherche algoritm sucer un peu (39%?)


Posté ma réponse dans le fil lié Stackoverflow.com/questions/594720/ c-binaire-littéraux / ... .


4 Réponses :


9
votes

Nope, pas de littéraux binaires en C #. Vous pouvez bien sûr analyser une chaîne en format binaire à l'aide de convert.toint32, mais je ne pense pas que ce serait une excellente solution.

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


2 commentaires

Je laisserai la question ouverte pendant quelques heures, mais cela étant la première réponse, si cela se révèle vrai, il sera choisi comme réponse officielle. Merci.


Vrai, cela fonctionne, et cela est utile dans la plupart des cas. Malheureusement, il ne fonctionne pas si vous l'utilisez dans un commutateur (myvariable) {bac de boîtier: console.writeine ​​("valeur détectée"); Pause; } instruction, puisque case n'autorise que les constantes.



2
votes

vous pourrait utiliser une méthode d'extension: xxx

Cependant, si cela est sage, je vous laisse à vous (compte tenu du fait qu'il fonctionnera sur n'importe quel chaîne).


0 commentaires

3
votes

à partir de C # 7, vous pouvez représenter une valeur littérale binaire dans Code:

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


0 commentaires

0
votes

Depuis Visual Studio 2017, des littéraux binaires tels que 0B00001 sont pris en charge.


3 commentaires

Est-ce une répétition de cette réponse existante ?


Désolé, mais je tiens à comprendre que la nouvelle publication vs 2017 soutient une telle utilisation, espérons que cela aide.


Je ne vois pas comment répéter quelque chose qui a déjà été expliqué beaucoup mieux dans la réponse acceptée pourrait aider quelqu'un.