2009-08-07 2 views
8

Я действительно в тупике на этом. В C# есть шестнадцатеричные константы формат представление, как показано ниже:C# представление двоичных констант

int a = 0xAF2323F5; 

есть двоичная константа формат представление?

+0

Что вы имеете в виду? const int a = 2938315765; – Paco

+1

Спасибо, я думаю, ваш результат верен, но я искал систематическое решение. Должен ли я публиковать вопрос o stackoverflow для каждой двоичной константы, которую мне нужно преобразовать? –

+0

.. например 10110011 –

ответ

3

На C# 7 вы можете представлять двоичную буквенное значение в коде:

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

Дополнительную информацию можно найти here.

9

Нет, нет бинарных литералов в C#. Конечно, вы можете разобрать строку в двоичном формате с помощью Convert.ToInt32, но я не думаю, что это было бы отличным решением.

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

Я оставлю вопрос открытым на несколько часов, но это первый ответ, если он окажется правдой, он будет выбран в качестве официального ответа. Спасибо. –

+2

Это правда ... может также принять сейчас. –

+0

Правда, это работает, и это полезно в большинстве случаев. К сожалению, это не работает, если вы используете его в 'switch (myVariable) {case bin: Console.WriteLine (« значение обнаружено »); ломать; } ', поскольку' case' допускает только константы. – Matt

2

Вы могли использовать метод расширения:

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

Однако, это ли мудрый я оставлю до вас (учитывая тот факт, что будет работать на любой строке).

0

С Visual Studio 2017 поддерживаются бинарные литералы, такие как 0b00001.

+0

Является ли это повторением [этого существующего ответа] (https://stackoverflow.com/a/41193863)? – Pang

+0

извините, но я хочу понять, что недавно выпущенный VS 2017 поддерживает такое использование, надеюсь, что это поможет. – Xiaoyuvax

Смежные вопросы