在C#中写入控制台时,Unicode char无法正确显示

时间:2014-10-15 18:12:54

标签: c# unicode char cellular-automata

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

0 个答案:

没有答案