我正在开发代码以在 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)的所需输出?