7

有没有一种简单的方法可以将字节数组转换为字符串,以便通过以下单元测试?我找不到适用于所有值的编码。

  [TestMethod]
  public void TestBytToString()
  {
     byte[] bytArray = new byte[256];
     for (int i = 0; i < bytArray.Length; i++)
     {
        bytArray[i] = (byte)i;
     }
     string x = System.Text.Encoding.Default.GetString(bytArray);
     for (int i = 0; i < x.Length; i++)
     {
        int y = (int)x[i];
        Assert.AreEqual(i, y);
     }
  }
4

5 回答 5

1

System.Text.Encoding.UTF8应该为你做一个伎俩。

于 2013-07-24T20:41:46.807 回答
1
string x = Encoding.UTF8.GetString(bytArray, 0, bytArray.Length);
于 2013-07-24T20:42:31.190 回答
1
var str = System.Text.Encoding.Default.GetString(bytArray);
于 2013-07-24T20:49:29.153 回答
0

据我所知,字节中值 127 以上的任何内容都被视为负数,并且由于 char 只能取正值,因此在您采用的每种编码中都会产生未知的 char。

您可能希望将字节数组转换为无符号短(ushort),然后转换为字符串...

于 2013-07-24T21:10:44.743 回答
0

这有效:

  [TestMethod]
  public void TestBytToString()
  {
     byte[] bytArray = new byte[256];
     ushort[] usArray = new ushort[256];
     for (int i = 0; i < bytArray.Length; i++)
     {
        bytArray[i] = (byte)i;

     }

     string x = System.Text.Encoding.Default.GetString(bytArray);
     for (int i = 0; i < x.Length; i++)
     {
        int y = System.Text.Encoding.Default.GetBytes(x.Substring(i, 1))[0];
        Assert.AreEqual(i, y);
     }
  }
于 2013-07-24T22:13:34.397 回答