在测试中将字节数组转换为字符串时出错

时间:2012-08-15 12:48:25

标签: c# string unit-testing bytearray type-conversion

我有以下测试,我一直在努力工作

[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"

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

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

谢谢,Neil

2 个答案:

答案 0 :(得分:3)

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

这可能会解决您的问题;

byte[] testArray = new byte[] { 49, 48, 48, 49 };

答案 1 :(得分:0)

使用当前代码,您将每个字节视为ASCII代码,ascii代码0应为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());