写位的二进制表示法 - C#

时间:2013-10-11 11:31:53

标签: c# binary bit notation

在C#中有一些编号用来表示你写的是浮点数,双精度数,整数等等。

所以我想写一个二进制数,我该怎么做?

说我有一个字节:

byte Number = 10011000 //(8 bits)

我应该如何编写它而不必麻烦地知道二进制中的10011000 =十进制中的152?

P.S。:解析字符串是完全不可能的(我需要表现)

3 个答案:

答案 0 :(得分:7)

c#6 c#7开始,您可以使用0b前缀获取类似于0x for hex

的二进制文件
int x           = 0b1010000; //binary value of 80
int seventyFive = 0b1001011; //binary value of 75

试一试

答案 1 :(得分:3)

除了解析字符串之外别无他法,我担心:

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;

答案 2 :(得分:2)

您可以这样写:

int binaryNotation = 0b_1001_1000;

在C#7.0及更高版本中,可以使用下划线'_'作为数字分隔符,包括十进制,二进制或十六进制表示法,以提高可读性。