我在这个问题上真的很困惑。在C#中,有以下十六进制常量表示格式:
int a = 0xAF2323F5;
有二进制常量表示格式吗?
我在这个问题上真的很困惑。在C#中,有以下十六进制常量表示格式:
int a = 0xAF2323F5;
在C#中没有二进制字面量。当然,您可以使用Convert.ToInt32解析二进制格式的字符串,但我认为这不是一个好的解决方案。
int bin = Convert.ToInt32( "1010", 2 );
switch(myVariable) { case bin: Console.WriteLine("value detected"); break; }
语句中使用它,它将无法工作,因为 case
只允许常量。 - Matt0b1010
。请参见@Luis的答案。 - Mike从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.
}
更多信息可以在这里找到。
您可以使用扩展方法:
public static int ToBinary(this string binary)
{
return Convert.ToInt32( binary, 2 );
}
自 Visual Studio 2017 开始,二进制字面量(例如0b00001)得到支持。