在C#中有一些编号用来表示你写的是浮点数,双精度数,整数等等。
所以我想写一个二进制数,我该怎么做?
说我有一个字节:
byte Number = 10011000 //(8 bits)
我应该如何编写它而不必麻烦地知道二进制中的10011000 =十进制中的152?
P.S。:解析字符串是完全不可能的(我需要表现)
答案 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及更高版本中,可以使用下划线'_'作为数字分隔符,包括十进制,二进制或十六进制表示法,以提高可读性。