我正在开发代码以在C#中执行基本元胞自动机。我在Microsoft Visual Studio Express 2012中工作。
总的来说,我的代码正常运行,但在将结果写入控制台时遇到了麻烦。
我写了一个类“bitrep”,其中包含一个方法“brep”,它将uint作为输入并返回一个字符串,该字符串对应于该uint的位表示。
出于这个问题的目的,我希望返回的字符串是1的黑色(填充)正方形和0的白色(空)正方形。
class bitrep
{
private uint t = 1;
private int i = 0;
private StringBuilder val = new StringBuilder();
public string brep(uint n)
{
val.Clear();
for (i = 31; i >= 0; i--)
{
test = (t & n >> i) == 1;
if (test)
val.Append((char)9632); // Produce a solid square for 1's
else
val.Append((char)9633); // Produce an empty square for 0's.
}
return val.ToString();
}
}
当使用上面的代码运行程序时,输出的示例如下:
???????????????■????????????????
??????????????■■■???????????????
Press any key to continue . . .
其中实心/黑色方块代表1,但是代替白色方块,0被写为?'。
为什么不能正确显示0的白色方块(具有Unicode UTF-16(十进制)编码9633)的所需输出?