4

There are some notations to write numbers in C# that tell if what you wrote is float, double, integer and so on.

So I would like to write a binary number, how do I do that?

Say I have a byte:

byte Number = 10011000 //(8 bits)

How should I write it without having the trouble to know that 10011000 in binary = 152 in decimal?

P.S.: Parsing a string is completely out of question (I need performance)

4

3 回答 3

15

作为c# 6c# 7 你可以使用0b前缀来获取类似于0xfor hex的二进制文件

int x           = 0b1010000; //binary value of 80
int seventyFive = 0b1001011; //binary value of 75

试一试

于 2018-02-15T04:58:34.880 回答
5

你可以这样写:

int binaryNotation = 0b_1001_1000;

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

于 2020-06-19T09:16:31.857 回答
4

恐怕除了解析字符串之外别无他法:

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;
于 2013-10-11T11:36:30.840 回答