2009-08-07 30 views
8

我真的很难过这个。在C#中有一个十六进制常量表示格式,如下所示:C#二进制常量表示

int a = 0xAF2323F5; 

是否有二进制常量表示格式?

+0

你是什么意思? const int a = 2938315765; – Paco 2009-08-07 20:28:31

+1

谢谢,我想你的结果是正确的,但我正在寻找系统的解决方案。我应该为每个需要转换的二进制常量发布一个问题stackoverflow? – 2009-08-07 20:29:11

+0

..例如10110011 – 2009-08-07 20:29:46

回答

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

我会让问题在几个小时内公开,但这是第一个答案,如果它是真实的,它将被选为官方答案。谢谢。 – 2009-08-07 20:28:06

+2

这是真的......现在不妨接受。 – 2009-08-07 20:30:01

+0

的确如此,这是有效的,并且在大多数情况下它很有用。不幸的是,如果你在'switch(myVariable){case bin:Console.WriteLine(“value detected”)中使用它,打破; }'语句,因为'case'只允许常量。 – Matt 2013-12-19 12:15:26

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 2017-08-02 06:47:22

+0

对不起,但我想知道新发布的VS 2017支持这种用法,希望这有助于。 – Xiaoyuvax 2017-08-17 05:17:18