我有以下测试,我一直在努力工作
[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
答案 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());