2009-08-07 18 views
8

Naprawdę jestem na nią zakłopotany. W języku C# jest stałe szesnastkowe Format reprezentacja jak poniżej:C# stała binarna reprezentacja

int a = 0xAF2323F5; 

istnieje binarny Stałe Format reprezentacja?

+0

Co masz na myśli? const int a = 2938315765; – Paco

+1

Dziękuję, myślę, że twój wynik jest poprawny, ale szukałem systematycznego rozwiązania. Czy powinienem wysłać pytanie o stackoverflow dla każdej stałej binarnej, którą muszę przekonwertować? –

+0

.. na przykład 10110011 –

Odpowiedz

3

jak C# 7 można reprezentować wartość logiczną dosłowne w postaci kodu:

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

Dalsze informacje można znaleźć here.

9

Nie, bez literałów binarnych w języku C#. Możesz oczywiście parsować ciąg w formacie binarnym, używając Convert.ToInt32, ale nie sądzę, że byłoby to świetne rozwiązanie.

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

Pozostawię pytanie otwarte przez kilka godzin, ale jest to pierwsza odpowiedź, jeśli okaże się prawdą, zostanie wybrana jako oficjalna odpowiedź. Dziękuję Ci. –

+2

To prawda ... równie dobrze może teraz zaakceptować. –

+0

To prawda, że ​​działa i jest przydatne w większości przypadków. Niestety nie działa, jeśli używasz go w 'switch (myVariable) {case bin: Console.WriteLine (" wykryto wartość "); przerwa; } 'instrukcja, ponieważ' case' zezwala tylko na stałe. – Matt

2

Ty mógłby wykorzystywać metodę rozszerzenia:

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

Jednak czy to jest mądre Wyjadę do ciebie (biorąc pod uwagę fakt, że będzie działać na dowolnym ciągiem).

0

Od Visual Studio 2017 obsługiwane są literały binarne, takie jak 0b00001.

+0

Czy to powtórzenie [tej istniejącej odpowiedzi] (https://stackoverflow.com/a/41193863)? – Pang

+0

Niestety, ale chcę się dowiedzieć, że nowo wydany VS 2017 obsługuje takie wykorzystanie, mam nadzieję, że to pomoże. – Xiaoyuvax