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

本文关键字:表示 二进制 用于 | 更新日期: 2023-09-27 18:35:08

有一些符号可以在 C# 中写入数字,以判断您编写的内容是浮点数、双精度数、整数等。

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

假设我有一个字节:

byte Number = 10011000 //(8 bits)

我应该如何编写它而不会费力地知道二进制中的 10011000 = 十进制中的 152?

PS:解析字符串是完全不可能的(我需要性能)

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

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;

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

除了

解析字符串之外,恐怕没有办法做到这一点:

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;