1

我有以下测试,我一直在尝试开始工作

[Test]
public void Test()
{
    byte[] testArray = new byte[] { 1, 0, 0, 1 };

    string number = System.Text.Encoding.ASCII.GetString(testArray);

    Assert.That(number, Is.EqualTo("1001"));
}

我收到以下错误

String lengths are both 4. Strings differ at index 0.
Expected: "1001"
But was:  "\0\0"

这让我感到困惑,因为我将字节数组转换为字符串的生产代码使用相同的方法,然后我注销了字符串,这正是我所期望的。

在这种情况下进行转换之前我应该​​对字节数组做些什么吗?

谢谢,尼尔

4

2 回答 2

3

ASCII 中的字节 0 不是“0”而是一些转义字符。

这可能会解决您的问题;

byte[] testArray = new byte[] { 49, 48, 48, 49 };
于 2012-08-15T12:52:37.580 回答
0

使用您当前的代码,您将每个字节视为 ASCII 代码,0 的 ascii 代码应该是 48...

我怀疑您实际上想要(使用Linq):

string number=string.Join('',testArray.Select(x=>x.ToString()).ToArray());

或者

string number=System.Text.Encoding.ASCII.GetString(testArray.Select(x=>x+48).ToArray());   
于 2012-08-15T12:54:50.133 回答