c# - 有没有一种方法可以调整此功能使其不使用 LINQ? (将字节数组转换为字符串)

标签 c# .net linq

有没有一种方法可以改变这个将字节数组转换为字符串的函数,使其不使用 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/

相关文章:

c# - 是否可以在 C# 中使用作为关键字的值定义枚举?

c# - 如何访问 ASP.NET MVC 中 Html 元素的属性

c# - IsDisposed 是如何工作的?

c# - linq Expression<TDelegate> 赋值如何在语言语法级别上工作

c# - LinqToCSV 和十进制全局化

c# - 如何测试 MethodInfo.ReturnType 是否为 System.Void 类型?

c# - 如何使用 C# 更新存储在 XML 中的数据?

c# - 运行所有测试时测试失败,但一个一个运行成功

c# - 用于C#项目的Makefile和从命令行编译

c# - 如何重构linq表达式树