是否有一种方法可以在c#中编写二进制文字,比如在十六进制前加上0x?0b不行。
如果不是,有什么简单的方法可以做到呢?某种字符串转换?
是否有一种方法可以在c#中编写二进制文字,比如在十六进制前加上0x?0b不行。
如果不是,有什么简单的方法可以做到呢?某种字符串转换?
当前回答
从Visual Studio 2017 (c# 7.0)开始,您可以使用0b000001
其他回答
恐怕只有整数和十六进制直接(ECMA 334v4):
9.4.4.2整型字面值整型字面值用于写入值 类型为int、uint、long和ulong。 整数字面值有两种可能 形式:十进制和十六进制。
要解析,你可以使用:
int i = Convert.ToInt32("01101101", 2);
string sTable="static class BinaryTable\r\n{";
string stemp = "";
for (int i = 0; i < 256; i++)
{
stemp = System.Convert.ToString(i, 2);
while(stemp.Length<8) stemp = "0" + stemp;
sTable += "\tconst char nb" + stemp + "=" + i.ToString() + ";\r\n";
}
sTable += "}";
Clipboard.Clear();
Clipboard.SetText ( sTable);
MessageBox.Show(sTable);
使用这个,对于8位二进制,我用它来做一个静态类,它把它放入剪贴板。然后它被粘贴到项目中并添加到Using部分,因此任何与nb001010有关的内容都从表中取出,至少是静态的,但仍然…… 我使用c#进行大量的PIC图形编码,并在high - tech C中大量使用0b101010
——从代码输出的样本——
static class BinaryTable
{ const char nb00000000=0;
const char nb00000001=1;
const char nb00000010=2;
const char nb00000011=3;
const char nb00000100=4;
//etc, etc, etc, etc, etc, etc, etc,
}
:-) 尼尔
c# 7.0支持二进制文字(以及可选的下划线分隔符)。
一个例子:
int myValue = 0b0010_0110_0000_0011;
您也可以在Roslyn GitHub页面上找到更多信息。
如果你看一下。net编译器平台(“Roslyn”)的语言特性实现状态,你可以清楚地看到在c# 6.0中这是一个计划好的特性,所以在下一个版本中我们可以用通常的方式来实现它。
虽然不可能使用文字,也许BitConverter也可以是一个解决方案?