有没有一种方法可以改变这个将字节数组转换为字符串的函数,使其不使用 LINQ? (使其与以前的 .NET 版本兼容)?
private string ByteToString(byte[] data)
{
return String.Concat(data.Select(b => b.ToString("x2")));
}
在网络上找到的大多数方法似乎都返回一个不可打印的 unicode 字符串。上面的代码返回一个安全的字符串(例如 b8b30dcfcac41ebd5313107adf7054024fb1ac69 而不是大量的高 ASCII 字符)但是我真的不明白上面的函数在做什么(特别是关于“x2”参数。
最佳答案
当然,如果您只想将代码置于“非 LINQ”之上,则可以将其滚动到 foreach
循环中。 String.Concat()
只是将一个 IEnumerable
连接成一个字符串,我们可以使用 StringBuilder
来完成:
private string ByteToString(byte[] data)
{
var builder = new StringBuilder();
for (int i=0; i<data.Length; i++)
{
builder.Append(data[i].ToString("x2"));
}
return builder.ToString();
}
可能有很多方法可以做到这一点,但这将是您列出的 LINQ 代码的直译。
关于c# - 有没有一种方法可以调整此功能使其不使用 LINQ? (将字节数组转换为字符串),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8067080/