2012-08-15 82 views
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" 

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

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

谢谢,尼尔

+0

只要尝试反向'System.Text.Encoding.ASCII.GetBytes( “1001”);'。你会得到'49,48,48,49' :) – 2012-08-15 12:52:18

+0

你是否试图将字符串'1001'转换为字节并检查结果? – HonkyTonk 2012-08-15 12:52:20

+0

@ L.B Bah,我太慢了。 ;) – HonkyTonk 2012-08-15 12:52:40

回答

3

字节0的ASCII不为 “0”,但一些转义字符。

这可能会解决您的问题;

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

这可能有帮助。 http://www.asciitable.com/通知字节48和49分别是字符0和1。而字节0和1是空的(标题开始)。 – CaffGeek 2012-08-15 12:55:51

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()); 
相关问题