在C#中,有一些表示数字类型的符号,可以指示你所写的是浮点数、双精度数、整数等等。
那么,我想写一个二进制数字,该怎么做呢?
比如说,我有一个字节:
byte Number = 10011000 //(8 bits)
如何在不知道二进制的10011000等于十进制的152的情况下编写它呢?
注:解析字符串完全不是问题(我需要性能)。
从c# 6更正为c# 7,你可以使用0b
前缀获取二进制数,类似于用0x
获取十六进制数。
int x = 0b1010000; //binary value of 80
int seventyFive = 0b1001011; //binary value of 75
试试看
你可以写这个:
int binaryNotation = 0b_1001_1000;
恐怕除了解析字符串,没有其他方法可以做到这一点:
byte number = (byte) Convert.ToInt32("10011000", 2);
很遗憾,您无法像那样分配常量值。
如果您经常这样做,我想您可以编写一个字符串扩展方法,使其更易读:
public static class StringExt
{
public static byte AsByte(this string self)
{
return (byte)Convert.ToInt32(self, 2);
}
}
byte number = "10011000".AsByte();
我不确定这是否是一个好主意...
个人而言,我只使用十六进制初始化器,例如:
byte number = 0x98;
byte Number = 152; // 10011000
有什么问题吗?十六进制,即0x98
,也应该可以使用,并且更容易计算。 - Bernhard Barker