错误字节数组转换为字符串测试
问题描述:
我有以下的测试,我一直在试图让工作错误字节数组转换为字符串测试
[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的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
答
随着你对待每一个字节为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());
只要尝试反向'System.Text.Encoding.ASCII.GetBytes( “1001”);'。你会得到'49,48,48,49' :) – 2012-08-15 12:52:18
你是否试图将字符串'1001'转换为字节并检查结果? – HonkyTonk 2012-08-15 12:52:20
@ L.B Bah,我太慢了。 ;) – HonkyTonk 2012-08-15 12:52:40