在C#中将字节数组转换为字符串
本文关键字:数组 转换 字符串 字节数 字节 | 更新日期: 2023-09-27 18:24:41
有没有一种简单的方法可以将字节数组转换为字符串,从而通过下面的单元测试?我找不到适用于所有值的编码。
[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);
}
}
System.Text.Encoding.UTF8
应该会帮你一个忙。
string x = Encoding.UTF8.GetString(bytArray, 0, bytArray.Length);
var str = System.Text.Encoding.Default.GetString(bytArray);
据我所知,字节中超过值127的任何东西都被认为是负数,因为char只能取正值,所以在每次编码中都会产生未知的char。
您可能希望将字节数组转换为无符号短(ushort),然后转换为字符串。。。
这很有效:
[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);
}
}